$(function() {
    $('ul.software li span.name').live('click', editName);
    $('ul.software li a').live('click', useInSync);
    reInit();
    $('body').click(function() { $('#dialogwrapper').remove(); });
    $('form').validate({ ignore: '.ignore' });
    $('#password2').rules('add', { equalTo: '#password' });
    $('#templatesids').change(function () { $('#templateswarning').show(); });
    $(document).ajaxSuccess(function () {
        if ($('.popupwrapper').attr('style') != 'display: block;') $('.ac_results').each(function () { $(this).hide(); });
    });
    $('#templatesids').multipleSelect();
});

function setTab(id) {
    if (!documentReady) return;
    $('#tab').val(id);
    $('.tab').each(function(i, el) { if (el.id == id) $(el).show(); else $(el).hide(); });
    $('#tabid').val(id);
    $('#tabs>ul>li>a').each(function(i, el) { if (el.id == 'a' + id) $(el).addClass('selected'); else $(el).removeClass('selected'); });
    if (id != 'general') {
        $('.save').attr('disabled', true);
    }
    else {
        $('.save').attr('disabled', false);
    }
    return false;
}


function loadSoft() {
    $('#softwarewrapper').load(base + 'assetzabbixprofile.ivp/rendersoftware', { id: $('#id').val() }, reInit);
    return setTab('soft');
}

function reInit() {
    $('a.btnattach').click(openAttachDialog);
    $('a.btndettach').click(dettach);
    $('.attacher').click(handleButtons);
    $('.attacher').each(function(i, e) { $(e).removeAttr('checked'); });
    $('#remove').attr('checked', true);
    $('.nodeicon').click(function() {
        if ($(this).attr('src').indexOf("plus") != -1)
            $(this).attr('src', 'img/tree/minus.gif');
        else
            $(this).attr('src', 'img/tree/plus.gif');  
        $(this).parent().find('ul').toggle();
    });
}

function useInSync() {
    var $span = $(this).parent().find('span.name');
    var confirmText = $span.attr('isgroup') == 'True' ? AssetResources.ConfirmDeleteGroup : AssetResources.ConfirmDeleteSoft;
    if (($(this).find(':checkbox[checked]').length && (($span.attr('isgroup') == 'True' && confirm(confirmText)) || $span.attr('isgroup') != 'True')) || $(this).find(':checkbox[checked]').length == 0) {
        if ($span.is(':hidden')) {
            var $textreplace = $(this).parent().find('#textreplace');
            if ($textreplace.length > 0) {
                if ($textreplace.val() == '') {
                    alert(AssetResources.EmptyName);
                    $textreplace.remove();
                }
                else {
                    $span.attr('dbname', $textreplace.val()).text($textreplace.val());
                    $textreplace.remove();
                    $span.show();
                }
            }
        }
        if ($(this).find(':checkbox[checked]').length) {
            $(this).find('img').attr('src', 'img/minus.png');
            $(this).find('input').removeAttr('checked');
        }
        else {
            $(this).find('img').attr('src', 'img/plus.png');
            $(this).find('input').attr('checked', true);
        }
        useInSyncPost($span, 'addremove');
    }
    return false;
}

function useInSyncPost(span, action) {
    $.getJSON(base + 'assetzabbixprofile.ivp/useinsync', { id: $('#id').val(), dbid: span.attr('dbid'), name: span.attr('dbname'), zabbixname: span.attr('zabbixname'), action: action, remove: $('#remove').is(':checked')}, function(result) {
        if (result.Id == null) {
            if (span.attr('isgroup') == "True") {
                $('#softwarewrapper').load(base + 'assetzabbixprofile.ivp/rendersoftware', { id: $('#id').val() }, reInit);
            }
            else {
                span.attr('dbid', '');
                span.attr('dbname', '');
                span.text(span.attr('zabbixname'));
            }
        }
        else {
            span.attr('dbid', result.Id);
        }

    });
}

function editName() {
    var $span = $(this);
    $('#textreplace').remove();
    $('.name').show();
    $('<input type="text" id="textreplace" />').attr('maxlength', '100').val($.trim($span.text())).css('width', ($span.width() < 45) ? 45 : $span.width() + 10).insertBefore($span).focus();
    $span.hide();
    
    //handle width
    $('#textreplace').keypress(function(e) {
    handleEditNameWidth($(this), e);
    if (e.keyCode == '13') {
        e.preventDefault();
        if ($(this).val() == '') {
            alert(AssetResources.EmptyName);
        }
        else {
            $(this).remove();
            $span.attr('dbname', $(this).val()).text($(this).val());
            $span.show();
            if ($span.parent().find('a :checkbox[checked]').length)
                useInSyncPost($span, 'changename');
        }
    }
    }).keyup(function(e) {
        handleEditNameWidth($(this), e);
    });

    $('#textreplace').keydown(function(e) {
        if (e.keyCode == '27') {
            e.preventDefault();
            $span.show();
            $(this).remove();
        }
    });
}

function openAttachDialog() {
    $img = $(this).find('img');
    if ($img.attr('src').indexOf("disabled") != -1) return false;
    if ($('#dialogwrapper').length)
        $('#dialogwrapper').remove();
    else {
        $('<div id="dialogwrapper">').load(base + 'assetzabbixprofile.ivp/loadattachdialog', { id: $('#id').val() }, function() {
            $('#dialogwrapper').click(function() { return false; });
            //if enabled autocomplitter don't work
            //$('#attachsearcher').focus();
            $('#attachsearcher').autocomplete(base + 'assetzabbixprofile.ivp/findgroups/' + $('#id').val(), { minChars: 1 }).result(groupSelected);

            //handle width
            $('#attachsearcher').keypress(function(e) {
                handleSearcherWidth($(this), e);
                if (e.keyCode == '13') {
                    e.preventDefault();
                    searcherKeyPress($(this));
                }
            }).keyup(function(e) {
            handleSearcherWidth($(this), e);
            });

            $('#dialogwrapper li.group').click(function() { $('#attachsearcher').val($.trim($(this).find('span').text())); searcherKeyPress($('#attachsearcher')); });
            $('#dialogwrapper select').change(function() {
                if ($(this).val() != '') {
                    $('#attachsearcher').val($.trim($('#dialogwrapper select option:selected').text()));
                    searcherKeyPress($('#attachsearcher'));
                }
            });

            $('#attachsearcher').keydown(function(e) {
                if (e.keyCode == '27') {
                    e.preventDefault();
                    $('#dialogwrapper').remove();
                }
            });
        }).insertBefore('#ulwrapper');
    }
    return false;
}

function groupSelected(e, d) {
    $(e.target).val(d[0]);
    searcherKeyPress($(e.target));
}

function searcherKeyPress(searcher) {
    if (searcher.val() == '') {
        alert(AssetResources.EmptySearch);
    }
    else {
        var sids = "";
        $('.attacher:checked').each(function(i, e) { if (sids.length > 0) sids += ','; sids += $(e).attr('zabbixname'); });
        $('#softwarewrapper').load(base + 'assetzabbixprofile.ivp/attach', { id: $('#id').val(), name: searcher.val(), sids: sids }, reInit);
    }
}

function handleEditNameWidth($input, code) {
    if (code != '13' && code != '27')
        $input.css('width', ($input.val().length * 7) + 20);
}

function handleSearcherWidth($input, code) {
    if (code != '13' && code != '27') {
        $input.css('width', ($input.val().length * 7) + 35);
        $('.popupwrapper').css('width', $input.width() + 21);
        if ($('.popupwrapper').width() < 221)
            $('.popupwrapper').css('width', 221);
        if ($input.width() < 200)
            $input.css('width', 200);
    }
}

function handleButtons() {
    if (!$('.attacher').is(':checked')) {
        $('a.btnattach img').attr('src', $('a.btnattach img').attr('src').replace('.png', '_d.png'));
        $('a.btndettach img').attr('src', $('a.btndettach img').attr('src').replace('.png', '_d.png'));
        $('a.btnattach').addClass('disabled');
        $('a.btndettach').addClass('disabled');
    }
    else {
        $('a.btnattach img').attr('src', $('a.btnattach img').attr('src').replace('_d', ''));
        $('a.btndettach img').attr('src', $('a.btndettach img').attr('src').replace('_d', ''));
        $('a.btnattach').removeClass('disabled');
        $('a.btndettach').removeClass('disabled');
    }
}

function dettach() {
    var sids = "";
    $('.attacher:checked').each(function(i, e) { if (sids.length > 0) sids += ','; sids += $(e).attr('zabbixname'); });
    if (sids.length > 0 && confirm(AssetResources.ConfirmDettach)) {
        $('#softwarewrapper').load(base + 'assetzabbixprofile.ivp/dettach', { id: $('#id').val(), sids: sids, remove: $('#remove').is(':checked') }, reInit);
    }
    return false;
}

function changePage(n) {
    $('#softwarewrapper').load(base + 'assetzabbixprofile.ivp/rendersoftware', { id: $('#id').val(), page: n }, reInit);
    return false;
}