$j(function() {
    
    $j("#wait-dialog").dialog({
        bgiframe: true,
        height: 140,
        modal: true
    });

    function init() {
        $j('#src li').draggable({
            helper: 'clone',
            revert: 'invalid'
        });

        sortable();
    }

    function start() {
        init();
        creator();

        $j(".do-actions").find("input").click(function(){
            $(this).disable();
        });
        
        $j("#dst, #additional-panel, .do-actions").removeClass("ui-helper-hidden");
        $j("#wait-dialog").dialog("close");
    }

    start();

    $j("#dst").droppable({
        accept: '#src li',
        activeClass: 'ui-state-hover',
        hoverClass: 'ui-state-active',
        drop: function(event, ui) {
            var item = ui.draggable;
            item.attr('class', item.attr('class').replace('field-', '').replace(' ui-draggable', ''));
            add(item);
            refreshActions();
            ui.draggable.remove();

            checkAdditional();
        }
    });

    function checkAdditional() {
        if ($j('#src').find('ul').find('li').length > 1) {
            $j('#src').find('.tmp-msg').remove();
        } else {
            $j('#src').find('div').append("<div class='tmp-msg'>дополнительных элементов нет</div>");
        }
    }

    function dropToSrc($item) {
        val = $item.find('div.title').html();
        cls = $item.find('div.title').attr('id');
        $j('#src').find('.tmp-msg').remove();
        $j('#src ul').append("<li class='"+cls.replace('field-', '').replace(' ui-draggable', '')+"'>" + val + "</li>");
        
        $item.remove();
        init();
    }

    function sortable() {
        $j("#dst ul").sortable({
            placeholder: 'ui-state-highlight-2',
            revert: true,
            helper: 'original'
        });
        $j("ul, li").disableSelection();
    }

    function creator() {
        $j('.main-list li').each(function(i) {
            add($j(this));
        });
    }

    function add(item) {
        title = $j(item).text();
        value = $j('.field-'+$j(item).attr('class')).html();

        $j('.template').find('.title').text(title);
        $j('.template').find('.title').attr('id', 'field-'+$j(item).attr('class'));
        $j('.template').find('.value').html(value);
        $j('#dst ul').append('<li>' + $j('.template').html() + '</li>');
    }

    function clear() {
        $j('.template').find('.title').text('');
        $j('.template').find('.title').attr('id', '');
        $j('.template').find('.value').html('');
    }

    function refreshActions() {
        $j('#dst li').click(function(ev) {
            var $item = $j(this);
            var $target = $j(ev.target);

            if ($target.is('img.ui-icon-trash')) {
                dropToSrc($item);
            }

            return false;
        });
    }

    refreshActions();
});

function showMessage() {
    $j('#context').text('Дополнительные поля можно переместить на форму заявлений!');
}

function doSaveForm() {
    var conferenceId = $j('#conferenceId').val();
    if (!conferenceId) {
        conferenceId = 0;
    }
    
    var o = "conferenceId="+conferenceId+"&";
    $j('#dst li').each(function(i) {
        o += $j(this).find('.value').children().attr('name') + "="+i+"&";
    });

    do_ajax('/form/save?'+o, 'main_td');
}

function doResetForm() {
    
    var conferenceId = $j('#conferenceId').val();
    if (conferenceId) {
        do_ajax('/form/standart?conferenceId='+conferenceId, 'main_td');
    } else {
        do_ajax('/form/standart', 'main_td');
    }
}

function doCancelForm() {
    var conferenceId = $j('#conferenceId').val();
    if (!conferenceId) {
        conferenceId = 0;
    }

    var o = "conferenceId="+conferenceId;

    do_ajax('/form/cancel?'+o, 'main_td');
}