
/**
 * Accounting
 *
 * @copyright Copyright (c) 2011, ecto.lt
 * @author    Benas Valančius <benas@ecto.lt>
 * @package   Framework
 *
 * $Id: accounting.js 2961 2011-09-15 13:13:55Z noen $
 */

var cal1, cal2;
var hoverPosition = -1;

var filter = {
    setTag : function(tagId)
    {
        if(tagId === undefined)
            tagId = parseInt(tagId);

        var isNew = true;
        var tags = $('#filter_tags').val().split('|');

        $('#filterTags li').removeAttr('class');

        var newTags = new Array();
        for(var x in tags)
        {
            var d = parseInt(tags[x]);
            if(!isNaN(d))
            {
                if(d != tagId)
                {
                    if($('#filter_tag_'+ d).length)
                    {
                        $('#filter_tag_'+ d).attr('class','activeTag');
                        newTags.push(d);
                    }
                }
                else
                    isNew = false;
            }
        }

        if(isNew && !isNaN(tagId))
        {
            $('#filter_tag_'+ tagId).attr('class','activeTag');
            newTags.push(tagId);
        }

        $('#filter_tags').val(newTags.join('|'));
        acc.getTransaction();
    }
};

var accounting = {
    deleteType : function(id)
    {
        if(id === undefined)
            return;

        var html = '';

        html += getMessage('Pažymėkite jei norite ištrinti ir visus tipui priklausančius įrašus. Priešingu atvėju visi įrašai bus priskirti tipau "Kita".', 'info');
        html += '<div class="aForm">';
        html += '<div class="aFormRow">';
        html += '<div class="aFormCheckboxSimple"><label><input id="doType" name="image" type="checkbox" value="1" checked="checked" /> Trinti ir visus tipo įrašus.</label></div>';
        html += '</div>';
        html += '<div style="text-align:center;padding:5px;"><button type="button" onclick="accounting.deleteTypeContinue('+ id +')" style="width:100px;">Gerai</button> <button type="button" onclick="dpp.close();" style="width:100px;">Atšaukti</button></div>';
        html += '</div>';

        dpp.addTitle('Trinti tipą');
        dpp.addContent( html );
        dpp.addPopup(400, 100);
    },

    deleteTypeContinue : function(id)
    {
        var path = '?delete='+ id;
        if($('#doType').attr('checked'))
            path += '&all';

        window.location = path;
    },

    hideEmpty : function()
    {
        var status = $('input[name="hideEmpty"]').attr('checked');
        if(status)
        {
            var duration = 3600 * 24 * 100;
            ecto.setCookie('hideEmpty', 1, duration);
        }
        else
        {
            ecto.removeCookie('hideEmpty');
        }
        $('input[name="hideEmpty"]').attr('disabled',true);
        window.location.reload();
    },

    editItem: function(id)
    {
        window.location = '/islaidos/prideti/?item='+ id;
    },

    deleteItem: function(id, type)
    {
        if(id === undefined)
            return;

        var html = '';

        html += '<div class="fwAlert">';
        html += '<p>Ar tikrai norite ištrinti šį įrašą?</label></p>';
        html += '<p><button type="button" onclick="accounting.deleteItemContinue('+ id +',\''+ type +'\')" style="width:100px;">Gerai</button> <button type="button" onclick="dpp.close();" style="width:100px;">Atšaukti</button></p>';
        html += '</div>';

        dpp.addTitle( 'Trinti įrašą' );
        dpp.addContent( html );
        dpp.addPopup(300, 150);
    },

    deleteItemContinue: function(id, type)
    {
        new Ajax.Post(
        {
            url     : '/accounting/deleteItem/',
            data    : {id:id},
            json    : true,
            success : function(data)
            {
                if(type == 'expenses')
                {
                    accounting.getExpences();
                }
                if(type == 'incomes')
                {
                    accounting.getIncomes();
                }
                dpp.close();
            }
        });
    },

    deleteReminder: function(id)
    {
        if(id === undefined)
            return;

        var html = '';

        html += '<div class="fwAlert">';
        html += '<p>Ar tikrai norite ištrinti šį įrašą?</label></p>';
        html += '<p><button type="button" onclick="accounting.deleteReinderContinue('+ id +')" style="width:100px;">Gerai</button> <button type="button" onclick="dpp.close();" style="width:100px;">Atšaukti</button></p>';
        html += '</div>';

        dpp.addTitle( 'Trinti įrašą' );
        dpp.addContent( html );
        dpp.addPopup(300, 150);
    },

    deleteReinderContinue: function(id)
    {
        window.location = '?delete='+ id;
    },

    getDayStats: function(date, title)
    {
        if(date === undefined)
            return;

        if(title === undefined)
            title = date;

        var html = '<div class="aForm"><div id="dayStats" style="max-height:350px;overflow:auto;"></div></div>';

        dpp.hide();
        dpp.addTitle('Detaliau: '+ title );
        dpp.addContent( html );
        dpp.addPopup(400, 100);

        new Ajax.Post(
        {
            url     : '/accounting/getDayStats/',
            data    : {date:date},
            success : function(data)
            {
                $$('dayStats').innerHTML = data;
                dpp.show();
            }
        });
    },

    createUser: function()
    {
        var html = '';

        html += getMessage('Naujo šeimos nario įvedimo forma. Vienas iš laukų yra privalomas.', 'info');
        html += '<div class="aForm">';
        html += '<div id="errorMessage"><'+'!-- --'+'></div>';
        html += '<form name="sendForm" action="" method="post" onsubmit="return accounting.checkForm()">';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Vardas</div>';
        html += '<div class="aFormRight"><div class="aFormInput"><input id="fname" name="name" type="text" value="" /></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">El. pašto adresas</div>';
        html += '<div class="aFormRight"><div class="aFormInput"><input id="femail" name="email" type="text" value="" /> <img id="help1" class="icons icon_info" src="/design/img.gif" alt="" /></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormRight"><div class="aFormButton"><button type="submit">'+ _('ok') +'</button></div></div>';
        html += '</div>';
        html += '</form>';
        html += '</div>';

        dpp.addTitle('Vartotojas');
        dpp.addContent( html );
        dpp.addPopup(400, 100);

        helpActivate('help1', 'femail', 'Vartotojo el. pašto adresas reikalingas tik tuo atvėju jai Jūs norite pakvieti Jį kaip redaktorių.');
    },

    checkForm: function()
    {
        return true;
    },

    slideDown: function(id)
    {
        if($$('row__'+ id).style.display == 'none')
        {
            $$('row__'+ id).style.display = '';
            $$('icon__'+ id).className = 'icons icon_minus';
        }
        else
        {
            $$('row__'+ id).style.display = 'none';
            $$('icon__'+ id).className = 'icons icon_plus';
        }
    },

    toggleSlider: function()
    {
        if($('#toggleHeader_block').css('display') == 'none')
        {
            $('#toggleHeader_block').slideDown('slow');
            $('#toggleHeader_title').text('slėpti');
        }
        else
        {
            $('#toggleHeader_block').slideUp('slow');
            $('#toggleHeader_title').text('rodyti');
        }
    },

    showYears: function()
    {
        var a = $('#yearSelect').position();
        $('#yearSelect').attr('class','on');
        $('#yearOptions').css({
            position:'absolute',
            top:a.top + $('#yearSelect').height() + 'px',
            left:a.left +'px'
        });
        if($('#yearSelect').width() > $('#yearOptions').width())
            $('#yearOptions').css('width',$('#yearSelect').width() + 'px');

        if($('#yearOptions').css('display') == 'none')
        {
            $('#yearOptions').slideDown();
            setTimeout("$(document).one('click',function(e){accounting.binder(e, 'year');});", 100);
        }
        else
        {
            accounting.binder($('#yearOptions'), 'year');
        }
    },

    showMonth: function()
    {
        var a = $('#monthSelect').position();
        $('#monthSelect').attr('class','on');
        $('#monthOptions').css({
            position:'absolute',
            top:a.top + $('#monthSelect').height() + 'px',
            left:a.left +'px'
        });
        if($('#monthSelect').width() > $('#monthOptions').width())
            $('#monthOptions').css('width',$('#monthSelect').width() + 'px');

        if($('#monthOptions').css('display') == 'none')
        {
            $('#monthOptions').slideDown();
            setTimeout("$(document).one('click',function(e){accounting.binder(e, 'month');});", 100);
        }
        else
        {
            accounting.binder($('#monthOptions'), 'month');
        }
    },

    binder : function(e, type)
    {
        if($(e.originalTarget).parent().attr('id') != type +'Select')
        {
            $('#'+ type +'Options').slideUp('slow', function(){$('#'+ type +'Select').attr('class','');});
        }
    },

    createPeriodicPayments: function()
    {
        var html = '';

        html += getMessage('Naujo periodinio mokėjimo sukūrimas.', 'info');
        html += '<div class="aForm">';
        html += '<div id="errorMessage"><'+'!-- --'+'></div>';
        html += '<form name="sendForm" action="" method="post" onsubmit="return accounting.checkPeriodicPayments()">';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Tipas</div>';
        html += '<div class="aFormRight"><div class="aFormSelect"><select id="ftype" name="type"></select></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Pavadinimas</div>';
        html += '<div class="aFormRight"><div class="aFormInput"><input id="fname" name="name" type="text" value="" /></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormRight"><div class="aFormButton"><button type="submit">'+ _('ok') +'</button> <button type="button" onclick="dpp.close();">'+ _('cancel') +'</button></div></div>';
        html += '</div>';
        html += '<input type="hidden" name="createPeriodicPayments" value="1" />';
        html += '</form>';
        html += '</div>';

        dpp.hide();
        dpp.addTitle('Periodinis mokėjimas');
        dpp.addContent( html );
        dpp.addPopup(400, 100);

        new Ajax.Post(
        {
            url     : '/accounting/getAllCategories/',
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#ftype').html(data);
                }
                dpp.show();
            }
        });
    },

    checkPeriodicPayments : function()
    {
        if($('#ftype').val() === '' || $('#fname').val() === '')
            return false;
    },

    periodicSum : function()
    {
        var total = 0;

        $('input[name^="sum_"]').each(function(){
            var n = $(this).val().replace(/\'/g, '').replace(/\./g, '').replace(/,/g, '.');
            if(n != '')
                total += parseFloat(n);
        });

        $('#periodicTotal').text(formatPrice(total));
    },

    periodicLineSum : function(action, id)
    {
        switch(action)
        {
            case 'from':
                var from = $('input[name="from_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var till = $('input[name="till_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var diff = $('input[name="diff_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                if(from != '' && till != '')
                {
                    var diff = parseFloat(till) - parseFloat(from);
                    $('input[name="diff_'+ id +'"]').val(diff);

                    var price = $('input[name="price_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                    if(price != '')
                    {
                        var res = parseFloat(price) * parseFloat(diff);
                        $('input[name="sum_'+ id +'"]').val(formatPrice(res));
                    }
                }
                else if(from != '' && till == '' && diff != '')
                {
                    var till = parseFloat(diff) + parseFloat(from);
                    $('input[name="till_'+ id +'"]').val(till);

                    var price = $('input[name="price_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                    if(price != '')
                    {
                        var res = parseFloat(price) * parseFloat(diff);
                        $('input[name="sum_'+ id +'"]').val(formatPrice(res));
                    }
                }
                break;

            case 'till':
                var from = $('input[name="from_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var till = $('input[name="till_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var diff = $('input[name="diff_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                if(from != '' && till != '')
                {
                    var diff = parseFloat(till) - parseFloat(from);
                    $('input[name="diff_'+ id +'"]').val(diff);

                    var price = $('input[name="price_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                    if(price != '')
                    {
                        var res = parseFloat(price) * parseFloat(diff);
                        $('input[name="sum_'+ id +'"]').val(formatPrice(res));
                    }
                }
                else if(from == '' && till != '' && diff != '')
                {
                    var from = parseFloat(till) + parseFloat(diff);
                    $('input[name="from_'+ id +'"]').val(from);

                    var price = $('input[name="price_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                    if(price != '')
                    {
                        var res = parseFloat(price) * parseFloat(diff);
                        $('input[name="sum_'+ id +'"]').val(formatPrice(res));
                    }
                }
                break;

            case 'diff':
                var from = $('input[name="from_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var diff = $('input[name="diff_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var till = $('input[name="till_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                if(diff == '' || (from == '' && till == ''))
                    break;

                if(from == '')
                {
                    var res = parseFloat(till) - parseFloat(diff);
                    $('input[name="from_'+ id +'"]').val(res);
                }
                else
                {
                    var res = parseFloat(diff) + parseFloat(from);
                    $('input[name="till_'+ id +'"]').val(res);
                }

                var price = $('input[name="price_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                if(price == '')
                    break;

                var res = parseFloat(price) * parseFloat(diff);
                $('input[name="sum_'+ id +'"]').val(formatPrice(res));
                break;

            case 'price':
                var diff = $('input[name="diff_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var price = $('input[name="price_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');

                if(price != '')
                    $('input[name="price_'+ id +'"]').val(formatPrice(price));

                if(diff == '' || price == '')
                    break;

                var res = parseFloat(price) * parseFloat(diff);
                $('input[name="sum_'+ id +'"]').val(formatPrice(res));
                break;

            case 'sum':
                var diff = $('input[name="diff_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var sum = $('input[name="sum_'+ id +'"]').val().replace(/\'/g, '').replace(/,/g, '.');

                if(sum != '')
                    $('input[name="sum_'+ id +'"]').val(formatPrice(sum));

                if(diff == '' || sum == '')
                    break;

                var res = parseFloat(sum) / parseFloat(diff);
                $('input[name="price_'+ id +'"]').val(formatPrice(res));
                break;
        }
        this.periodicSum();
    },

    periodicLineSave : function(id, pid)
    {
        var data = {
            id    : id,
            pid   : pid,
            from  : $('input[name="from_'+  id +'"]').val(),
            till  : $('input[name="till_'+  id +'"]').val(),
            diff  : $('input[name="diff_'+  id +'"]').val(),
            price : $('input[name="price_'+ id +'"]').val(),
            sum   : $('input[name="sum_'+   id +'"]').val()
        };

        if(data.sum === '')
        {
            ecto.alert('Suma negali būti tuščia!');
            return;
        }

        new Ajax.Post(
        {
            url     : '/accounting/periodicLineSave/',
            data    : data,
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#periodic_'+ id).attr('class','disabled');
                    $('#periodic_'+ id +' input').attr('disabled',true);
                    $('#action_button_'+ id +' img').attr('class','icons icon_delete_p');
                    $('#action_button_'+ id +' img').attr('title','Atšaukti mokėjimą');
                    $('#action_button_'+ id).attr('href','javascript:accounting.periodicLineCancel('+ id +','+ pid +');');

                    $('#assetTotal').text(data.asset);
                    $('#debtTotal').text(data.debt);
                    $('#netWorth').text(data.total);
                }
            }
        });
    },

    periodicLineCancel : function(id, pid)
    {
        ecto.confirm('Ar tikrai norite atšaukti šį įrašą?', 'accounting.periodicLineCancelContinue('+ id +','+ pid +');');
    },

    periodicLineCancelContinue : function(id, pid)
    {
        new Ajax.Post(
        {
            url     : '/accounting/periodicLineCancel/',
            data    : {id:id,pid:pid},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#periodic_'+ id).attr('class','');
                    $('#periodic_'+ id +' input').attr('disabled',false);
                    $('#action_button_'+ id +' img').attr('class','icons icon_save_p');
                    $('#action_button_'+ id +' img').attr('title','Išsaugoti');
                    $('#action_button_'+ id).attr('href','javascript:accounting.periodicLineSave('+ id +','+ pid +');');
                    ecto.closeConfirm();

                    $('#assetTotal').text(data.asset);
                    $('#debtTotal').text(data.debt);
                    $('#netWorth').text(data.total);
                }
            }
        });
    },

    periodicEdit : function(id, pid)
    {
        var html = '';

        html += '<div class="aForm">';
        html += '<div id="errorMessage"><'+'!-- --'+'></div>';
        html += '<form name="sendForm" action="" method="post" onsubmit="return accounting.checkPeriodicPayments()">';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Tipas</div>';
        html += '<div class="aFormRight"><div class="aFormSelect"><select id="ftype" name="type"></select></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Pavadinimas</div>';
        html += '<div class="aFormRight"><div class="aFormInput"><input id="fname" name="name" type="text" value="" /></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormRight"><div class="aFormButton"><button type="submit">'+ _('ok') +'</button> <button type="button" onclick="dpp.close();">'+ _('cancel') +'</button></div></div>';
        html += '</div>';
        html += '<input type="hidden" id="savePeriodicPayments" name="savePeriodicPayments" value="" />';
        html += '</form>';
        html += '</div>';

        dpp.hide();
        dpp.addTitle('Periodinis mokėjimas');
        dpp.addContent( html );
        dpp.addPopup(400, 100);

        new Ajax.Post(
        {
            url     : '/accounting/periodicEdit/',
            data    : {id:pid},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#ftype').html(data.types);
                    $('#ftype').val(data.data.type);
                    $('#fname').val(data.data.name);
                    $('#savePeriodicPayments').val(data.data.id);
                }
                dpp.show();
            }
        });
    },

    periodicDelete : function(id, pid)
    {
        ecto.confirm('Ar tikrai norite pašalinti šį periodinį mokėjimą? Ištrynus nebeliks šiame saraše visuose puslapiuose.<br/>Pastaba: įrašai išlaidų sąraše liks.', 'accounting.periodicDeleteContinue('+ id +','+ pid +');');
    },

    periodicDeleteContinue : function(id, pid)
    {
        new Ajax.Post(
        {
            url     : '/accounting/periodicDelete/',
            data    : {id:pid},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#periodic_'+ id).remove();
                    if($('#periodicContent').html() == '')
                        document.location.reload();

                    ecto.closeConfirm();
                    accounting.periodicSum();
                }
            }
        });
    },

    createLoan : function(itemId)
    {
        if(itemId === undefined)
            itemId = false;

        var html = '';

        html += '<div class="aForm">';
        html += '<div id="errorMessage"><'+'!-- --'+'></div>';
        html += '<form name="sendForm" action="" method="post" onsubmit="return accounting.checkCreateLoan()">';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Pavadinimas</div>';
        html += '<div class="aFormRight"><div class="aFormInput"><input id="ftitle" name="title" type="text" value="" /></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Aprašmas</div>';
        html += '<div class="aFormRight"><div class="aFormTextarea"><textarea id="fdescription" name="description"></textarea></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Suma</div>';
        html += '<div class="aFormRight"><div class="aFormInput"><input id="famount" name="amount" type="text" value="" /></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormRight"><div class="aFormButton"><button type="submit">'+ _('ok') +'</button> <button type="button" onclick="dpp.close();">'+ _('cancel') +'</button></div></div>';
        html += '</div>';
        html += '<input type="hidden" id="saveNewLoan" name="saveNewLoan" value="1" />';
        html += '<input type="hidden" id="fid" name="id" value="" />';
        html += '</form>';
        html += '</div>';

        if(itemId)
            dpp.hide();

        dpp.addTitle('Paskola');
        dpp.addContent( html );
        dpp.addPopup(400, 100);

        if(itemId)
        {
            new Ajax.Post(
            {
                url     : '/accounting/getLoan/',
                data    : {id:itemId},
                json    : true,
                success : function(data)
                {
                    if(data)
                    {
                        $('#fid').val(data.id);
                        $('#ftitle').val(data.title);
                        $('#fdescription').val(data.description);
                        $('#famount').val(data.amount);
                        dpp.show();
                    }
                }
            });
        }
    },

    checkCreateLoan : function()
    {
        var v = {
            title       : $('#ftitle').val(),
            description : $('#fdescription').val(),
            amount      : $('#famount').val()
        };

        if(v.title == '' || v.amount == '')
            return false;

        return true;
    },

    deleteLoan : function(id)
    {
        ecto.confirm('Ar tikrai norite pašalinti šią paskolą? Ištrynus kartu išsitrins ir visi su šia paskola įvesti mokėjimai ir pajamos.', 'accounting.deleteLoanContinue('+ id +');');
    },

    deleteLoanContinue : function(id)
    {
        new Ajax.Post(
        {
            url     : '/accounting/deleteLoan/',
            data    : {id:id},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#loans_'+ id).remove();
                    if($('#periodicContent').html() == '')
                        document.location.reload();

                    ecto.closeConfirm();
                }
            }
        });
    },

    expandLoan : function(id)
    {
        if($('#loanData_'+ id).length > 0)
        {
            $('#loanData_'+ id).slideUp('slow', function(){$(this).remove();});
            return false;
        }

        var loanData = $('<tr id="loanData_'+ id +'"></tr>');
        var loanContent = $('<td colspan="4">test</td>').appendTo(loanData);
        $('#loans_'+ id).after(loanData);
    }
};


var acc = {
    setFilter : function()
    {
        var query = $('.search input[name="search"]').val();
        $('#filter_search').val(query);
        acc.getTransaction(1);
    },

    resetFilter : function()
    {
        $('.search input[name="search"]').val('');
        $('#filter_search').val('');
        acc.getTransaction(1);
    },

    countData : function(type)
    {
        switch(type)
        {
            case 'count':
                var count = $('#z1 input[name="count"]').val().replace(/\'/g, '').replace(/,/g, '.');
                var price = $('#z1 input[name="price"]').val().replace(/\'/g, '').replace(/\./g, '').replace(/,/g, '.');

                if(count != '' && price != '')
                {
                    var amount = parseFloat(count) * parseFloat(price);
                    $('#z1 input[name="amount"]').val(formatPrice(amount));
                    $('#z1 input[name="price"]').val(formatPrice(price));
                }
                $('#z1 input[name="count"]').val(count.replace(/\'/g, '').replace(/\./g, ','));
                break;

            case 'price':
                var count = $('#z1 input[name="count"]').val().replace(/\'/g, '').replace(/\./g, '').replace(/,/g, '.');
                var price = $('#z1 input[name="price"]').val().replace(/\'/g, '').replace(/,/g, '.');

                if(count != '' && price != '')
                {
                    var amount = parseFloat(count) * parseFloat(price);
                    $('#z1 input[name="amount"]').val(formatPrice(amount));
                    $('#z1 input[name="price"]').val(formatPrice(price));
                }
                break;

            case 'amount':
                var count = $('#z1 input[name="count"]').val().replace(/\'/g, '').replace(/\./g, '').replace(/,/g, '.');
                var amount = $('#z1 input[name="amount"]').val().replace(/\'/g, '').replace(/,/g, '.');

                if(count != '' && price != '')
                {
                    var price = parseFloat(amount) / parseFloat(count);
                    $('#z1 input[name="amount"]').val(formatPrice(amount));
                    $('#z1 input[name="price"]').val(formatPrice(price));
                }
                else if(count == '' && price == '')
                {
                    $('#z1 input[name="amount"]').val(formatPrice(amount));
                    $('#z1 input[name="price"]').val(formatPrice(price));
                    $('#z1 input[name="count"]').val(1);
                }
                break;

            case 'q_amount':
                var amount = $('#z0 input[name="amount"]').val().replace(/\'/g, '').replace(/,/g, '.');
                $('#z0 input[name="amount"]').val(formatPrice(amount));
                break;
        }
    },

    changeCategory : function()
    {
        if($('input[name="item[]"]:checked').length == 0)
        {
            $('#messageOutput').html(getMessage('Pažymėkite bent vieną įrašą prieš pasirenkant atitinkamą veiksmą.', 'error'));
            return false;
        }
        else
            $('#messageOutput').html('');

        var html = '';

        html += getMessage('Pasirinkdami kategoriją ir paspaudę "gerai" galite perkelti viena ar kelis įrašus į pasirinktą kategoriją.', 'info');
        html += '<div class="aForm">';
        html += '<div id="errorMessage"><'+'!-- --'+'></div>';
        html += '<form name="sendForm" action="" method="post" onsubmit="return acc.checkChangeCategory()">';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Tipas</div>';
        html += '<div class="aFormRight"><div class="aFormSelect"><select id="ftype" name="type"></select></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormRight"><div class="aFormButton"><button type="submit" id="submitAction">'+ _('ok') +'</button> <button type="button" onclick="dpp.close();">'+ _('cancel') +'</button></div></div>';
        html += '</div>';
        html += '</form>';
        html += '</div>';

        dpp.hide();
        dpp.addTitle('Kategorijos keitimas');
        dpp.addContent( html );
        dpp.addPopup(400, 100);

        new Ajax.Post(
        {
            url     : '/accounting/getAllCategories/',
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#ftype').html(data);
                }
                dpp.show();
            }
        });
    },

    checkChangeCategory : function()
    {
        if($('input[name="item[]"]:checked').length == 0)
        {
            $('#errorMessage').html(getMessage('Pažymėkite bent vieną įrašą prieš pasirenkant atitinkamą veiksmą.', 'error'));
            return false;
        }
        else
            $('#errorMessage').html('');

        $('#submitAction').attr('disabled', true);

        var data = {action:'changeCategory',category:$('#ftype').val()};
        $('input[name="item[]"]:checked').each(function(){
            data['items['+ this.value +']'] = this.value;
        });

        new Ajax.Post(
        {
            url     : '/accounting/setAction/',
            data    : data,
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    dpp.close();
                    acc.getTransaction();
                }
                $('#submitAction').removeAttr('disabled');
            }
        });

        return false;
    },

    changeTags : function()
    {
        if($('input[name="item[]"]:checked').length == 0)
        {
            $('#messageOutput').html(getMessage('Pažymėkite bent vieną įrašą prieš pasirenkant atitinkamą veiksmą.', 'error'));
            return false;
        }
        else
            $('#messageOutput').html('');

        var html = '';

        html += getMessage('Pasirinkite žymes kurias norite priskirti pažymėtiems įrašams.<br/>Pastaba: išsaugojus, prie pasirinktų operacijų, liks tik šios žymės.', 'info');
        html += '<div class="aForm">';
        html += '<div id="errorMessage"><'+'!-- --'+'></div>';
        html += '<form name="sendForm" action="" method="post" onsubmit="return acc.checkChangeTags()">';
        html += '<div class="aFormRow">';
        html += '<div class="aFormLeft">Žymės</div>';
        html += '<div class="aFormRight"><div class="aFormCheckbox" id="tagList"></div></div>';
        html += '</div>';
        html += '<div class="aFormRow">';
        html += '<div class="aFormRight"><div class="aFormButton"><button type="submit" id="submitAction">'+ _('ok') +'</button> <button type="button" onclick="dpp.close();">'+ _('cancel') +'</button></div></div>';
        html += '</div>';
        html += '</form>';
        html += '</div>';

        dpp.hide();
        dpp.addTitle('Žymių keitimas');
        dpp.addContent( html );
        dpp.addPopup(400, 100);

        new Ajax.Post(
        {
            url     : '/accounting/getAllTags/',
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#tagList').html(data);
                }
                dpp.show();
            }
        });
    },

    checkChangeTags : function()
    {
        if($('input[name="item[]"]:checked').length == 0)
        {
            $('#errorMessage').html(getMessage('Pažymėkite bent vieną įrašą prieš pasirenkant atitinkamą veiksmą.', 'error'));
            return false;
        }
        else
            $('#errorMessage').html('');

        $('#submitAction').attr('disabled', true);

        var data = {action:'changeTags'};
        $('input[name="newTag[]"]:checked').each(function(){
            data['tags['+ this.value +']'] = this.value;
        });
        $('input[name="item[]"]:checked').each(function(){
            data['items['+ this.value +']'] = this.value;
        });

        new Ajax.Post(
        {
            url     : '/accounting/setAction/',
            data    : data,
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    dpp.close();
                    acc.getTransaction();
                }
                $('#submitAction').removeAttr('disabled');
            }
        });

        return false;
    },

    getTags : function()
    {
        var tagList = new Array();
        $('#z1 input[name="tag[]"]:checked').each(function(){ tagList.push(this.value); });
        return tagList.join('|');
    },

    getTransaction : function(page)
    {
        if(page === undefined)
        {
            var hash = window.location.hash.split('/');
            if(hash[2] !== undefined)
                page = hash[2];
            else
            {
                page = 1;
            }
        }

        var tags = $('#filter_tags').val();

        window.location.hash = '#/page/'+ page;

        var query = $('#filter_search').val();

        new Ajax.Post(
        {
            url     : '/accounting/getTransactions/',
            data    : {page:page,query:query,tags:tags},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#transactionList').html(data);

                    if($('#itemId').val() != '')
                        $('#transaction_'+ $('#itemId').val()).css('background','#fefab1');
                }
            }
        });
    },

    loadReminder : function(id)
    {
        $('#createTransaction .loading').show();
        $('#createTransaction .button button').attr('disabled',true);

        if($('#createTransaction').is(':hidden'))
            this.toggleCreateTransaction();

        this.resetErrors();
        this.showInput('n');

        new Ajax.Post(
        {
            url     : '/accounting/loadReminder/',
            data    : {id:id},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#periodicContent tr').css('background','');
                    //$('#transaction_'+ data.id).css('background','#fefab1');

                    // Bendri duomenys
                    $('#reminderId').val(data.id);
                    $('#itemId').val('');
                    $('#categoryId').val(data.categoryData.id);
                    $('#categoryName').val(data.categoryData.name);
                    $('#createTransaction input[name="name"]').val(data.name);
                    $('#createTransaction input[name="category"]').val(data.categoryData.name);
                    $('#createTransaction input[name="amount"]').val(data.total);

                    // Greita forma
                    $('#z0 input[name="qtype"][value="'+ data.action +'"]').attr('checked',true);

                    // Paprasta forma
                    $('#z1 input[name="ntype"][value="'+ data.action +'"]').attr('checked',true);
                    //$('#z1 input[name="date"]').val(data.date);
                    $('#z1 input[name="count"]').val(data.count);
                    $('#z1 select[name="countType"]').val(data.ctype),
                    $('#z1 input[name="price"]').val(data.price);
                    $('#z1 textarea[name="description"]').val(data.comment);
                    //$('#z1 input[name="reminder"]').removeAttr('checked');
                    $('#z1 input[name="reminder"]').attr('checked',true);
                    $('#z1 input[name="reminderDate"]').val(data.reminderStart);
                    $('#z1 input[name="tag[]"]').removeAttr('checked');

                    if(data.tags != undefined && data.tags)
                    {
                        for(var x in data.tags)
                            $('#z1 input[name="tag[]"][value="'+ data.tags[x].id +'"]').attr('checked',true);
                    }

                    acc.checkRemindersBlock();

                    // Kita
                    $('#createTransaction .button button[type="submit"]').text('Išsaugoti');

                    if($('#z0').is(':visible'))
                        $('#z0 input[name="name"]').focus();
                    else
                        $('#z1 input[name="name"]').focus();
                }
                $('#createTransaction .loading').hide();
                $('#createTransaction .button button').attr('disabled',false);
            }
        });
    },

    createTransaction : function()
    {
    },

    copyTransaction : function(id)
    {
        $('#createTransaction .loading').show();
        $('#createTransaction .button button').attr('disabled',true);

        this.resetErrors();

        if($('#createTransaction').is(':hidden'))
            this.toggleCreateTransaction();

        new Ajax.Post(
        {
            url     : '/accounting/getTransaction/',
            data    : {id:id},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#periodicContent tr').css('background','');

                    // Bendri duomenys
                    $('#reminderId').val('');
                    $('#itemId').val('');
                    $('#categoryId').val(data.categoryData.id);
                    $('#categoryName').val(data.categoryData.name);
                    $('#createTransaction input[name="name"]').val(data.name);
                    $('#createTransaction input[name="category"]').val(data.categoryData.name);
                    $('#createTransaction input[name="amount"]').val(data.price);

                    // Greita forma
                    $('#z0 input[name="qtype"][value="'+ data.action +'"]').attr('checked',true);

                    // Paprasta forma
                    $('#z1 input[name="ntype"][value="'+ data.action +'"]').attr('checked',true);
                    $('#z1 input[name="date"]').val(data.date);
                    $('#z1 input[name="count"]').val(1);
                    $('#z1 select[name="countType"]').val(data.ctype),
                    $('#z1 input[name="price"]').val(data.price);
                    $('#z1 textarea[name="description"]').val(data.comment);
                    $('#z1 input[name="reminder"]').removeAttr('checked');
                    $('#z1 input[name="reminderDate"]').val('');
                    $('#z1 input[name="tag[]"]').removeAttr('checked');

                    if(data.tags != undefined && data.tags)
                    {
                        for(var x in data.tags)
                            $('#z1 input[name="tag[]"][value="'+ data.tags[x].id +'"]').attr('checked',true);
                    }

                    acc.checkRemindersBlock();

                    // Kita
                    $('#createTransaction .button button[type="submit"]').text('Išsaugoti');

                    if($('#z0').is(':visible'))
                        $('#z0 input[name="name"]').focus();
                    else
                        $('#z1 input[name="name"]').focus();
                }
                $('#createTransaction .loading').hide();
                $('#createTransaction .button button').attr('disabled',false);
            }
        });
    },

    editTransaction : function(id)
    {
        $('#createTransaction .loading').show();
        $('#createTransaction .button button').attr('disabled',true);

        this.resetErrors();

        if($('#createTransaction').is(':hidden'))
            this.toggleCreateTransaction();

        new Ajax.Post(
        {
            url     : '/accounting/getTransaction/',
            data    : {id:id},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#periodicContent tr').css('background','');
                    $('#transaction_'+ data.id).css('background','#fefab1');

                    // Bendri duomenys
                    $('#reminderId').val('');
                    $('#itemId').val(data.id);
                    $('#categoryId').val(data.categoryData.id);
                    $('#categoryName').val(data.categoryData.name);
                    $('#createTransaction input[name="name"]').val(data.name);
                    $('#createTransaction input[name="category"]').val(data.categoryData.name);
                    $('#createTransaction input[name="amount"]').val(data.total);

                    // Greita forma
                    $('#z0 input[name="qtype"][value="'+ data.action +'"]').attr('checked',true);

                    // Paprasta forma
                    $('#z1 input[name="ntype"][value="'+ data.action +'"]').attr('checked',true);
                    $('#z1 input[name="date"]').val(data.date);
                    $('#z1 input[name="count"]').val(data.count);
                    $('#z1 select[name="countType"]').val(data.ctype),
                    $('#z1 input[name="price"]').val(data.price);
                    $('#z1 textarea[name="description"]').val(data.comment);
                    $('#z1 input[name="reminder"]').removeAttr('checked');
                    $('#z1 input[name="reminderDate"]').val('');
                    $('#z1 input[name="tag[]"]').removeAttr('checked');

                    if(data.tags != undefined && data.tags)
                    {
                        for(var x in data.tags)
                            $('#z1 input[name="tag[]"][value="'+ data.tags[x].id +'"]').attr('checked',true);
                    }

                    acc.checkRemindersBlock();

                    // Kita
                    $('#createTransaction .button button[type="submit"]').text('Redaguoti');

                    if($('#z0').is(':visible'))
                        $('#z0 input[name="name"]').focus();
                    else
                        $('#z1 input[name="name"]').focus();
                }
                $('#createTransaction .loading').hide();
                $('#createTransaction .button button').attr('disabled',false);
            }
        });
    },

    setTransaction : function(id)
    {
        $('#createTransaction .loading').show();
        $('#createTransaction .button button').attr('disabled',true);

        this.resetErrors();

        new Ajax.Post(
        {
            url     : '/accounting/getTransaction/',
            data    : {id:id},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    // Bendri duomenys
                    $('#reminderId').val('');
                    $('#itemId').val('');
                    $('#categoryId').val(data.categoryData.id);
                    $('#categoryName').val(data.categoryData.name);
                    $('#createTransaction input[name="name"]').val(data.name);
                    $('#createTransaction input[name="category"]').val(data.categoryData.name);
                    $('#createTransaction input[name="amount"]').val(data.price);

                    // Greita forma
                    $('#z0 input[name="qtype"][value="'+ data.action +'"]').attr('checked',true);

                    // Paprasta forma
                    $('#z1 input[name="ntype"][value="'+ data.action +'"]').attr('checked',true);
                    //$('#z1 input[name="date"]').val(data.date);
                    //$('#z1 input[name="count"]').val(data.count);
                    $('#z1 input[name="count"]').val(1);
                    $('#z1 select[name="countType"]').val(data.ctype),
                    $('#z1 input[name="price"]').val(data.price);
                    $('#z1 textarea[name="description"]').val(data.comment);
                    $('#z1 input[name="reminder"]').removeAttr('checked');
                    $('#z1 input[name="reminderDate"]').val('');
                    $('#z1 input[name="tag[]"]').removeAttr('checked');

                    if(data.tags != undefined && data.tags)
                    {
                        for(var x in data.tags)
                            $('#z1 input[name="tag[]"][value="'+ data.tags[x].id +'"]').attr('checked',true);
                    }

                    acc.checkRemindersBlock();

                    // Kita
                    $('#createTransaction .button button[type="submit"]').text('Išsaugoti');

                    $('#createTransaction input').css('color','').attr('disabled',false);
                    $('#createTransaction select').css('color','').attr('disabled',false);
                    $('#createTransaction textarea').css('color','').attr('disabled',false);

                    if($('#z0').is(':visible'))
                        $('#z0 input[name="amount"]').select().focus();
                    else
                        $('#z1 input[name="amount"]').select().focus();
                }
                $('#createTransaction .loading').hide();
                $('#createTransaction .button button').removeAttr('disabled');
            }
        });
    },

    clearTransaction : function()
    {
        this.resetErrors();

        $('#reminderId').val('');
        $('#itemId').val('');
        $('#createTransaction input[name="name"]').val('');
        $('#createTransaction input[name="amount"]').val('');
        $('#z1 input[name="count"]').val(1);
        $('#z1 select[name="countType"]').val(0),
        $('#z1 input[name="price"]').val('');
        $('#z1 textarea[name="description"]').val('');
        $('#z1 input[name="reminder"]').removeAttr('checked');
        $('#z1 input[name="reminderDate"]').val('');
        $('#z1 input[name="tag[]"]').removeAttr('checked');

        acc.checkRemindersBlock();
        $('#createTransaction .button button[type="submit"]').text('Išsaugoti');
        $('#periodicContent tr').css('background','');

        if($('#z0').is(':visible'))
            $('#z0 input[name="name"]').focus();
        else
            $('#z1 input[name="name"]').focus();
    },

    checkRemindersBlock : function()
    {
        if($('#z1 input[name="reminder"]').is(':checked'))
        {
            $('#reminderBlock').attr('class','reminderBlock');
            $('#z1 input[name="reminderDate"]').removeAttr('disabled');
            $('#reminderBlock .date').show(200);
        }
        else
        {
            $('#reminderBlock').attr('class','fl');
            $('#z1 input[name="reminderDate"]').attr('disabled',true);
            $('#reminderBlock .date').hide(200);
        }
    },

    deleteTransaction : function(id)
    {
        ecto.confirm('Ar tikrai norite pašalinti šį įrašą?', 'acc.deleteTransactionContinue('+ id +');');
    },

    deleteTransaction : function(id)
    {
        ecto.confirm('Ar tikrai norite pašalinti šį įrašą?', 'acc.deleteTransactionContinue('+ id +');');
    },

    deleteTransactionContinue : function(id)
    {
        new Ajax.Post(
        {
            url     : '/accounting/deleteTransaction/',
            data    : {id:id},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    var pathVar = window.location.hash.split('/');
                    var page = 1;

                    if(pathVar[2] !== undefined)
                        page = parseInt(pathVar[2]);

                    acc.getTransaction(page);
                    ecto.closeConfirm();

                    if($('#itemId').val() == id)
                        acc.toggleCreateTransaction();

                    $('#assetTotal').text(data.asset);
                    $('#debtTotal').text(data.debt);
                    $('#netWorth').text(data.total);
                }
            }
        });
    },

    saveTransaction : function(type)
    {
        var status = true;
        this.autoClose();
        this.categoryClose();

        switch(type)
        {
            case 'q':
                var vars = {
                    type     : type,
                    id       : $('#itemId').val(),
                    name     : $('#z0 input[name="name"]').val(),
                    category : $('#categoryId').val(),
                    amount   : $('#z0 input[name="amount"]').val(),
                    action   : $('#z0 input:radio[name="qtype"]:checked').val()
                };

                if(vars.name == '')
                {
                    $('#z0 input[name="name"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z0 input[name="name"]').removeAttr('class');
                }
                if(vars.category == '')
                {
                    $('#z0 input[name="category"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z0 input[name="category"]').removeAttr('class');
                }
                if(vars.amount == '')
                {
                    $('#z0 input[name="amount"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z0 input[name="amount"]').removeAttr('class');
                }

                if(!status)
                    return false;

                $('#z0 .loading').show();
                $('#z0 .button button').attr('disabled',true);

                new Ajax.Post(
                {
                    url     : '/accounting/saveTransaction/',
                    data    : vars,
                    json    : true,
                    success : function(data)
                    {
                        if(data)
                        {
                            $('#itemId').val('');
                            $('#createTransaction input[name="name"]').val('');
                            $('#createTransaction input[name="amount"]').val('');
                            $('#z1 input[name="count"]').val(1);
                            $('#z1 select[name="countType"]').val(0),
                            $('#z1 input[name="price"]').val('');
                            $('#z1 textarea[name="description"]').val('');
                            $('#z1 input[name="reminder"]').removeAttr('checked');
                            $('#z1 input[name="reminderDate"]').val('');
                            $('#z1 input[name="tag[]"]').removeAttr('checked');
                            acc.getTransaction();
                            $('#z0 input[name="name"]').focus();

                            if(vars.id != '')
                                $('#createTransaction .button button[type="submit"]').text('Išsaugoti');

                            $('#assetTotal').text(data.asset);
                            $('#debtTotal').text(data.debt);
                            $('#netWorth').text(data.total);

                            var reminderId = $('#reminderId').val();
                            if(reminderId != '')
                            {
                                $('#reminderId').val('');
                                $('#reminder_'+ reminderId).fadeOut('slow');
                            }
                        }
                        $('#z0 .loading').hide();
                        $('#z0 .button button').removeAttr('disabled');
                    }
                });
                break;

            case 'n':
                var vars = {
                    type         : type,
                    id           : $('#itemId').val(),
                    name         : $('#z1 input[name="name"]').val(),
                    category     : $('#categoryId').val(),
                    date         : $('#z1 input[name="date"]').val(),
                    action       : $('#z1 input:radio[name="ntype"]:checked').val(),
                    count        : $('#z1 input[name="count"]').val(),
                    countType    : $('#z1 select[name="countType"]').val(),
                    price        : $('#z1 input[name="price"]').val(),
                    amount       : $('#z1 input[name="amount"]').val(),
                    reminder     : $('#z1 input[name="reminder"]').is(':checked') ? 1 : 0,
                    reminderDate : $('#z1 input[name="reminderDate"]').val(),
                    description  : $('#z1 textarea[name="description"]').val(),
                    tags         : acc.getTags()
                };

                if(vars.name == '')
                {
                    $('#z1 input[name="name"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z1 input[name="name"]').removeAttr('class');
                }
                if(vars.category == '')
                {
                    $('#z1 input[name="category"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z1 input[name="category"]').removeAttr('class');
                }
                if(vars.amount == '')
                {
                    $('#z1 input[name="amount"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z1 input[name="amount"]').removeAttr('class');
                }

                // Papildomi
                if(vars.price == '')
                {
                    $('#z1 input[name="price"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z1 input[name="price"]').removeAttr('class');
                }
                var tmpDate = vars.date.split('-');
                if(!form.checkDate(tmpDate[0], tmpDate[1], tmpDate[2]))
                {
                    $('#z1 input[name="date"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z1 input[name="date"]').removeAttr('class');
                }
                if(vars.count == '')
                {
                    $('#z1 input[name="count"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z1 input[name="count"]').removeAttr('class');
                }
                var tmpDate = vars.reminderDate.split('-');
                if(vars.reminder == 1 && (!form.checkDate(tmpDate[0], tmpDate[1], tmpDate[2]) || vars.reminderDate <= vars.date))
                {
                    $('#z1 input[name="reminderDate"]').attr('class','errorField');
                    status = false;
                }
                else
                {
                    $('#z1 input[name="reminderDate"]').removeAttr('class');
                }

                if(!status)
                    return false;

                $('#z1 .loading').show();
                $('#z1 .button button').attr('disabled',true);

                new Ajax.Post(
                {
                    url     : '/accounting/saveTransaction/',
                    data    : vars,
                    json    : true,
                    success : function(data)
                    {
                        if(data)
                        {
                            $('#itemId').val('');
                            $('#createTransaction input[name="name"]').val('');
                            $('#createTransaction input[name="amount"]').val('');
                            $('#z1 input[name="count"]').val(1);
                            $('#z1 select[name="countType"]').val(0),
                            $('#z1 input[name="price"]').val('');
                            $('#z1 textarea[name="description"]').val('');
                            $('#z1 input[name="reminder"]').removeAttr('checked');
                            $('#z1 input[name="reminderDate"]').val('');
                            $('#z1 input[name="tag[]"]').removeAttr('checked');
                            acc.getTransaction();
                            $('#z1 input[name="name"]').focus();

                            if(vars.id != '')
                                $('#createTransaction .button button[type="submit"]').text('Išsaugoti');

                            $('#assetTotal').text(data.asset);
                            $('#debtTotal').text(data.debt);
                            $('#netWorth').text(data.total);

                            var reminderId = $('#reminderId').val();
                            if(reminderId != '')
                            {
                                $('#reminderId').val('');
                                $('#reminder_'+ reminderId).fadeOut('slow');
                            }
                        }
                        $('#z1 .loading').hide();
                        $('#z1 .button button').removeAttr('disabled');
                    }
                });
                break;
        }
        return false;
    },

    resetErrors : function()
    {
        $('#z0 .errorField').removeAttr('class');
        $('#z1 .errorField').removeAttr('class');
    },

    toggleCreateTransaction : function()
    {
        if($('#createTransaction').is(':visible'))
        {
            $('#createTransaction').slideUp('slow', function(){
                $('#toggleCreateButton').css('border-bottom','1px solid #ccc');
                $('#createTransaction .button button[type="submit"]').text('Išsaugoti');
            });
            acc.clearTransaction();
        }
        else
        {
            $('#toggleCreateButton').css('border-bottom','1px solid #fff');
            $('#createTransaction').slideDown('slow');
        }
    },

    showInput : function(type)
    {
        switch(type)
        {
            case 'q':
                $('#z1').slideUp('slow');
                $('#z0').slideDown('slow');
                $('#qInput').attr('class','selected');
                $('#nInput').attr('class','');
                break;

            case 'n':
                $('#z0').slideUp('slow');
                $('#z1').slideDown('slow');
                $('#qInput').attr('class','');
                $('#nInput').attr('class','selected');
                break;
        }
        this.categoryClose();
        this.autoClose();
    },

    categoryActive : false,
    categoryTimer : false,
    showCategories : function(parent)
    {
        if(this.autoActive && $('#autoComplete').is(':visible'))
        {
            $('#autoComplete').slideUp(300);
        }

        if(!this.categoryActive)
        {
            $('#categoryList').mouseout(function(){
                acc.categoryTimer = setTimeout(function(){$('#categoryList').slideUp(300);}, 1000);
            });
            $('#categoryList').mouseover(function(){
                clearTimeout(acc.categoryTimer);
            });
            $('#categoryList .categoryItem').mouseover(function(){
                $('#categoryList .child').hide();
                $(this).find('.child').css({
                    'margin-top' : '-'+ $(this).height() +'px',
                    'margin-left' : $(this).width() +'px'
                }).show();
            });
            $('#categoryList .categoryItem').mouseout(function(){
                $('#categoryList .child').hide();
            });
        }
        else if($('#categoryList').is(':visible'))
        {
            $('#categoryList').slideUp(300);
        }
        else
        {
            $('#categoryList').slideDown(300);
        }

        if(!this.categoryActive || this.categoryActive != parent)
        {
            $('#categoryList').css({
                'width' : $('#'+ parent).width() - 2 +'px'
            }).appendTo($('#'+ parent)).slideDown(300);

            this.categoryActive = parent;
        }
    },

    categoryClose : function()
    {
        if(this.categoryActive && $('#categoryList').is(':visible'))
        {
            $('#categoryList').slideUp(300);
            clearTimeout(acc.categoryTimer);
            acc.categoryTimer = false;
        }
    },

    setCategory : function(name, id)
    {
        $('input[name="category"]').val(name);

        $('#categoryId').val(id);
        $('#categoryName').val(name);

        this.categoryClose();
        this.autoClose();
    },

    autoActive : false,
    autoLength : 0,
    findCategories : function(string, parent)
    {
        // Pasikeitė stringo ilgis
        if(this.autoLength != string.length)
        {
            $('#autoComplete li.categoryItem').attr('class','categoryItem');
            hoverPosition = -1;
            this.autoLength = string.length;
        }

        if(string.length < 2)
        {
            if(this.autoActive && $('#autoComplete').is(':visible'))
                $('#autoComplete').slideUp(300);
            else
                return;
        }

        if(this.categoryActive && $('#categoryList').is(':visible'))
            return;

        var search = string.toLowerCase()
        var visible = 0;

        $('#autoComplete li.categoryItem a').each(function(i){
            var text = $(this).text();
            var pos = $(this).text().toLowerCase().indexOf(search);
            if(pos >= 0 && visible < 15)
            {
                var newText = text.substr(0, pos);
                newText += '<span>'+ text.substr(pos, string.length) +'</span>';
                newText += text.substr(pos + string.length)

                $(this).html(newText);
                $(this).parent().show();
                visible++;
            }
            else
            {
                $(this).parent().hide();
            }
        });

        if(visible == 0)
            $('li.categorySpliter').hide();
        else
            $('li.categorySpliter').show();

        if(!this.autoActive || this.autoActive != parent)
        {
            $('#autoComplete').css({
                'width' : $('#'+ parent).width() - 2 +'px'
            }).appendTo($('#'+ parent)).slideDown(300);

            this.autoActive = parent;
        }
        else
        {
            if(string.length >= 2 && $('#autoComplete').is(':hidden'))
            {
                $('#autoComplete').stop();
                $('#autoComplete').slideDown(300);
            }
        }
    },

    autoClose : function()
    {
        if(this.autoActive && $('#autoComplete').is(':visible'))
        {
            $('#autoComplete').slideUp(300);
            $('#autoComplete li.categoryItem').attr('class','categoryItem');
            hoverPosition = -1;
        }
    },

    updateForms : function()
    {
        filter.setTag();
        acc.getTransaction();

        cal1 = new iCalendar('cal1', 'date_i', 'date_t');
        cal2 = new iCalendar('cal2', 'rem_i', 'rem_t');

        $('#z1 input[name="reminder"]').removeAttr('checked');
        $('#z1 input[name="reminder"]').click(function(){acc.checkRemindersBlock();});

        $('#z1 input[name="count"]').keypress(function(event){
            if(event.keyCode == 13)
                acc.countData('count');
        });
        $('#z1 input[name="price"]').keypress(function(event){
            if(event.keyCode == 13)
                acc.countData('price');
        });
        $('#z1 input[name="amount"]').keypress(function(event){
            if(event.keyCode == 13)
                acc.countData('amount');
        });
        $('#z0 input[name="amount"]').keypress(function(event){
            if(event.keyCode == 13)
                acc.countData('q_amount');
        });

        $('#createTransaction input[name="category"]').attr('autocomplete','off');
        $('#createTransaction input[name="category"]').blur(function()
        {
            if($('#z0 input[name="category"]').val() != $('#categoryName').val() || $('#z1 input[name="category"]').val() != $('#categoryName').val())
            {
                acc.setCategory('Kita',1);
            }
            acc.categoryClose();
            acc.autoClose();
        });

        $('#createTransaction input[name="category"]').keypress(function(event)
        {
            if(acc.autoActive && $('#autoComplete').is(':visible'))
            {
                oldPosition = hoverPosition;
                switch(event.keyCode)
                {
                    case 27:
                        $('input[name="category"]').val($('#categoryName').val());
                        $('#autoComplete').slideUp(300);
                        break;

                    case 40:
                        hoverPosition++;
                        if(hoverPosition > $('#autoComplete li.categoryItem:visible').length -1)
                            hoverPosition = $('#autoComplete li.categoryItem:visible').length -1;

                        if(oldPosition == hoverPosition)
                            break;

                        $('#autoComplete li.categoryItem:visible').attr('class','categoryItem');
                        $('#autoComplete li.categoryItem:visible:eq('+ hoverPosition +')').attr('class','categoryItem hover');
                        break;

                    case 38:
                        hoverPosition--;
                        if(hoverPosition < 0)
                            hoverPosition = 0;

                        if(oldPosition == hoverPosition)
                            break;

                        $('#autoComplete li.categoryItem:visible').attr('class','categoryItem');
                        $('#autoComplete li.categoryItem:visible:eq('+ hoverPosition +')').attr('class','categoryItem hover');
                        break;

                    case 13:
                        if($('#autoComplete li.hover a').length)
                        {
                            $('#autoComplete li.hover a').triggerHandler('click');
                        }
                        else
                        {
                            if($('#z0 input[name="category"]').val() != $('#categoryName').val() || $('#z1 input[name="category"]').val() != $('#categoryName').val())
                            {
                                acc.setCategory('Kita',1);
                            }
                        }
                        return false;
                        break;
                }
            }
        });

        $('#inputIn').autocomplete(autoJSON,{
            formatItem : function(item) { return item.value; },
            width : 270,
            max : 20,
            scrollHeight : 240,
            matchContains : true
        }).result(function(event, item) {
            $('#inputIn').val('');
            $('#createTransaction input').css('color','#aaaaaa').attr('disabled',true);
            $('#createTransaction select').css('color','#aaaaaa').attr('disabled',true);
            $('#createTransaction textarea').css('color','#aaaaaa').attr('disabled',true);
            acc.setTransaction(item.id);
        });

        $('#inputN').autocomplete(autoJSON,{
            formatItem : function(item) { return item.value; },
            width : 270,
            max : 20,
            scrollHeight : 240,
            matchContains : true
        }).result(function(event, item) {
            $('#inputN').val('');
            $('#createTransaction input').css('color','#aaaaaa').attr('disabled',true);
            $('#createTransaction select').css('color','#aaaaaa').attr('disabled',true);
            $('#createTransaction textarea').css('color','#aaaaaa').attr('disabled',true);
            acc.setTransaction(item.id);
        });
    },

    getList : function()
    {
        if(this.autoActive)
        {
            this.showCategories(this.autoActive);
        }
    }
};


var categoryManager = {
    init : function(itemId)
    {
        var html = '';

        html += '<div class="aForm" id="categoryPopup"></div>';

        dpp.hide();
        dpp.addTitle('Kategorijų redagavimas');
        dpp.addContent( html );
        dpp.addPopup(500, 50);

        new Ajax.Post(
        {
            url     : '/accounting/categoryManager/',
            success : function(data)
            {
                $('#categoryPopup').html(data);


                dpp.show();
                var maxHeight = $(window).height() - 170;
                if(maxHeight < 200)
                    maxHeight = 200;

                if($('#categoryPopup').height() > maxHeight)
                    $('#categoryPopup').height(maxHeight);

                if(itemId !== undefined)
                    categoryManager.activateCategory(itemId);
            }
        });
    },

    add : function(itemId)
    {
        this.init(itemId);
    },

    activateCategory : function(itemId)
    {
        $('.cmActive').attr('class','cmItem');
        $('.cmItem ul').hide();
        $('#cm_item___'+ itemId).attr('class','cmItem cmActive');
        $('#cm_item___'+ itemId +' ul').show();
    },

    editCategory : function(itemId)
    {
        $('#my_item___'+ itemId).hide();

        var form = $('<form onsubmit="categoryManager.saveCategory('+ itemId +');return false;" class="cmMyItemData" id="my_item_data___'+ itemId +'" />').html('<input type="text" /><br/><button type="submit">Išsaugoti</button><button type="button" onclick="categoryManager.cancelEditCategory('+ itemId +');">Atšaukti</button>');
        $('#my_item___'+ itemId).after(form);
        $('#my_item_data___'+ itemId +' input').val($('#my_item___'+ itemId +' .cmCategoryName').html()).focus();
    },

    cancelEditCategory : function(itemId)
    {
        $('#my_item___'+ itemId).show();
        $('#my_item_data___'+ itemId).remove();
    },

    saveCategory : function(itemId)
    {
        var category = $('#my_item_data___'+ itemId +' input').val();

        if(category == '')
        {
            $('#my_item_data___'+ itemId +' input').attr('class','errorField');
            return false;
        }
        else
            $('#my_item_data___'+ itemId +' input').removeAttr('class');

        $('#my_item_data___'+ itemId +' button').attr('disabled',true);

        new Ajax.Post(
        {
            url     : '/accounting/saveCategory/',
            data    : {id:itemId,category:category},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#my_item___'+ itemId).show();
                    $('#my_item_data___'+ itemId).remove();
                    $('#my_item___'+ itemId +' .cmCategoryName').text(category);
                    $('#child_category_'+ itemId +' a').text(category);
                }
                else
                {
                    $('#my_item_data___'+ itemId +' input').attr('class','errorField');
                    $('#my_item_data___'+ itemId +' button').removeAttr('disabled');
                }
            }
        });
    },

    createCategory : function(type)
    {
        $('#my_item___create_'+ type).hide();

        var form = $('<form onsubmit="categoryManager.newCategory('+ type +');return false;" class="cmMyItemData" id="my_item___data_'+ type +'" />').html('<input type="text" /><br/><button type="submit">Išsaugoti</button><button type="button" onclick="categoryManager.cancelNewCategory('+ type +');">Atšaukti</button>');
        $('#my_item___create_'+ type).before(form);
        $('#my_item___data_'+ type +' input').focus();
    },

    newCategory : function(type)
    {
        var category = $('#my_item___data_'+ type +' input').val();

        if(category == '')
        {
            $('#my_item___data_'+ type +' input').attr('class','errorField');
            return false;
        }
        else
            $('#my_item___data_'+ type +' input').removeAttr('class');

        $('#my_item___data_'+ type +' button').attr('disabled',true);

        new Ajax.Post(
        {
            url     : '/accounting/newCategory/',
            data    : {type:type,category:category},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#my_item___create_'+ type).show();
                    $('#my_item___data_'+ type).remove();
                    $('#my_item___create_'+ type).before(data.manager);
                    $('#parent_category_'+ type).before(data.list);
                }
                else
                {
                    $('#my_item___data_'+ type +' input').attr('class','errorField');
                    $('#my_item___data_'+ type +' button').removeAttr('disabled');
                }
            }
        });
    },

    cancelNewCategory : function(type)
    {
        $('#my_item___create_'+ type).show();
        $('#my_item___data_'+ type).remove();
    },

    deleteCategory : function(itemId)
    {
        if(itemId === undefined)
            return;

        var html = '';

        html += getMessage('Pažymėkite jei norite ištrinti ir visus kategorijai priklausančius įrašus. Priešingu atvėju visi įrašai bus priskirti kategorijai "Kita".', 'info');
        html += '<div class="aForm">';
        html += '<div class="aFormRow">';
        html += '<div class="aFormCheckboxSimple"><label><input id="doType" name="image" type="checkbox" value="1" checked="checked" /> Trinti ir visus kategorijos įrašus.</label></div>';
        html += '</div>';
        html += '<div style="text-align:center;padding:5px;"><button type="button" onclick="categoryManager.deleteTypeContinue('+ itemId +')" style="width:100px;">Gerai</button> <button type="button" onclick="apopup.close();" style="width:100px;">Atšaukti</button></div>';
        html += '</div>';

        apopup.addTitle('Trinti kategoriją');
        apopup.addContent( html );
        apopup.addPopup(400, 100);
    },

    deleteTypeContinue : function(itemId)
    {
        new Ajax.Post(
        {
            url     : '/accounting/deleteCategory/',
            data    : {id:itemId,checked:$('#doType').is(':checked')},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    if($('#my_item___'+ itemId).length)
                        $('#my_item___'+ itemId).remove();

                    if($('#my_item_data___'+ itemId).length)
                        $('#my_item_data___'+ itemId).remove();

                    if($('#child_category_'+ itemId).length)
                        $('#child_category_'+ itemId).remove();

                    apopup.close();
                }
            }
        });
    }
};

var tagsList = {
    manager : function()
    {
        var html = '';

        html += '<div class="aForm" id="tagsPopup"></div>';

        dpp.hide();
        dpp.addTitle('Žymių valdymas');
        dpp.addContent( html );
        dpp.addPopup(350, 50);

        new Ajax.Post(
        {
            url     : '/accounting/tagsList/',
            success : function(data)
            {
                $('#tagsPopup').html(data);

                dpp.show();
                var maxHeight = $(window).height() - 170;
                if(maxHeight < 200)
                    maxHeight = 200;

                if($('#tagsPopup').height() > maxHeight)
                    $('#tagsPopup').height(maxHeight);
            }
        });
    },

    createTag : function()
    {
        $('#tag_item___create').hide();

        var form = $('<form onsubmit="tagsList.newTag();return false;" class="cmMyItemData" id="tag_item___data" />').html('<input type="text" /><br/><button type="submit">Išsaugoti</button><button type="button" onclick="tagsList.cancelNewTag();">Atšaukti</button>');
        $('#tag_item___create').before(form);
        $('#tag_item___data input').focus();
    },

    newTag : function()
    {
        var name = $('#tag_item___data input').val();

        if(name == '')
        {
            $('#tag_item___data input').attr('class','errorField');
            return false;
        }
        else
            $('#tag_item___data input').removeAttr('class');

        $('#tag_item___data button').attr('disabled',true);

        new Ajax.Post(
        {
            url     : '/accounting/newTag/',
            data    : {name:name},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#tag_item___create').show();
                    $('#tag_item___data').remove();
                    $('#tag_item___create').before(data.manager);
                    $('#last_tag').before(data.list);
                    $('#last_tag').hide();
                    $('#filter_last_tag').before(data.filter);
                    $('#filter_last_tag').hide();
                }
                else
                {
                    $('#tag_item___data input').attr('class','errorField');
                    $('#tag_item___data button').removeAttr('disabled');
                }
            }
        });
    },

    cancelNewTag : function()
    {
        $('#tag_item___create').show();
        $('#tag_item___data').remove();
    },

    editTag : function(itemId)
    {
        $('#tag_item___'+ itemId).hide();

        var form = $('<form onsubmit="tagsList.saveTag('+ itemId +');return false;" class="cmMyItemData" id="tag_item_data___'+ itemId +'" />').html('<input type="text" /><br/><button type="submit">Išsaugoti</button><button type="button" onclick="tagsList.cancelEditTag('+ itemId +');">Atšaukti</button>');
        $('#tag_item___'+ itemId).after(form);
        $('#tag_item_data___'+ itemId +' input').val($('#tag_item___'+ itemId +' .cmCategoryName').html()).focus();
    },

    cancelEditTag : function(itemId)
    {
        $('#tag_item___'+ itemId).show();
        $('#tag_item_data___'+ itemId).remove();
    },

    saveTag : function(itemId)
    {
        var name = $('#tag_item_data___'+ itemId +' input').val();

        if(name == '')
        {
            $('#tag_item_data___'+ itemId +' input').attr('class','errorField');
            return false;
        }
        else
            $('#tag_item_data___'+ itemId +' input').removeAttr('class');

        $('#tag_item_data___'+ itemId +' button').attr('disabled',true);

        new Ajax.Post(
        {
            url     : '/accounting/saveTag/',
            data    : {id:itemId,name:name},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    $('#tag_item___'+ itemId).show();
                    $('#tag_item_data___'+ itemId).remove();
                    $('#tag_item___'+ itemId +' .cmCategoryName').text(name);
                    $('#tag_list___'+ itemId +' span').text(name);
                    $('#filter_tag_'+ itemId +' a').text(name);
                }
                else
                {
                    $('#tag_item_data___'+ itemId +' input').attr('class','errorField');
                    $('#tag_item_data___'+ itemId +' button').removeAttr('disabled');
                }
            }
        });
    },

    deleteTag : function(id)
    {
        if(id === undefined)
            return;

        var html = '';

        html += '<div class="fwAlert">';
        html += '<p>Ar tikrai norite ištrinti šią žymę?</label></p>';
        html += '<p><button type="button" onclick="tagsList.deleteTagContinue('+ id +')" style="width:100px;">Gerai</button> <button type="button" onclick="apopup.close();" style="width:100px;">Atšaukti</button></p>';
        html += '</div>';

        apopup.addTitle('Trinti žymę');
        apopup.addContent( html );
        apopup.addPopup(300, 150);
    },

    deleteTagContinue : function(itemId)
    {
        new Ajax.Post(
        {
            url     : '/accounting/deleteTag/',
            data    : {id:itemId},
            json    : true,
            success : function(data)
            {
                if(data)
                {
                    if($('#tag_item___'+ itemId).length)
                        $('#tag_item___'+ itemId).remove();

                    if($('#tag_list___'+ itemId).length)
                        $('#tag_list___'+ itemId).remove();

                    if($('#tag_list__block li').length == 1)
                        $('#last_tag').show();

                    if($('#filter_tag_'+ itemId).length)
                        $('#filter_tag_'+ itemId).remove();

                    if($('#filterTags a').length == 1)
                        $('#filter_last_tag').show();

                    filter.setTag();
                    apopup.close();
                }
            }
        });
    }
};

function formatPrice(value)
{
    return numberFormat(value, 2);
}

function numberFormat(value, length)
{
    value = value.toString();
    var v = Math.round(parseFloat(value.replace(/\'/g, '').replace(/,/g, '.')) * Math.pow(10, length)).toString();

    if(isNaN(v))
        v = '0';

    while(v.length < length + 1)
    {
        v = '0'+ v;
    }

    var integer = '';
    //var integer = v.substr(0, v.length - length);
    var float   = v.substr(v.length - length, length);

    var integerArray = v.substr(0, v.length - length).split('');
    var n = integerArray.length;
    for(var x in integerArray)
    {
        if(x != 0 && n % 3 == 0)
            integer += "'";

        n--;
        integer += integerArray[x];
    }

    return integer +','+ float;
}

function replaceDot(e)
{
    value = e.value.toString();
    e.value = value.replace(/\'/g, '').replace(/\./g, '');
}

function checkAll(element, status)
{
    if(status)
        $('input[name="'+ element +'"]').attr('checked', true);
    else
        $('input[name="'+ element +'"]').removeAttr('checked');
}

/**
 * Shopping List
 */
var shoppingList = {};

shoppingList.activate = function()
{
    $(function(){
        var fixHelper = function(e, ui){
            ui.children().each(function(){
                $(this).width($(this).width());
            });
            return ui;
        };

        $('#periodicContent').sortable({
            axis   : 'y',
            handle : '.icon_move',
            helper : fixHelper,
            update : function(){
                $('#periodicContent tr:even').removeClass('alt');
                $('#periodicContent tr:odd').addClass('alt');
                shoppingList.itemsUpdateList();
            }
        }).disableSelection();
    });
};

shoppingList.createShoppingList = function(errorOutput)
{
    var fields = [
        {
            selector     : '#shoppingListForm input[name="title"]',
            message      : _('Nurodykite prekių sąrašo pavadinimą.')
        }
    ];

    $('#shoppingListForm .spiner').show();

    var status = formHandler.checkForm(fields, errorOutput);

    $('#shoppingListForm .spiner').hide();

    return status;
};

shoppingList.createShoppingListItem = function(errorOutput)
{
    var fields = [
        {
            selector     : '#shoppingItemForm input[name="title"]',
            message      : _('Nurodykite prekės pavadinimą.')
        }
    ];

    $('#shoppingItemForm .spiner').show();

    var status = formHandler.checkForm(fields, errorOutput);

    $('#shoppingItemForm .spiner').hide();

    return status;
};

shoppingList.itemsUpdateList = function()
{
    var result = $('#periodicContent').sortable('toArray');

    var ids = {};
    for(var x in result)
        ids[x] = result[x].substr(7);

    new Ajax.Post(
    {
        url     : '/accounting/updateShoppingList/',
        data    : ids,
        success : function(data) { }
    });
};
