var sid = 0;
var hid = 0;
var canedit = false;
var mode = 'NORMAL';

$(function() {
    canedit = ($('#canedit').val() == 'true');
    if (mode == 'NORMAL') {
         $('.node>a.link>span.cm').click(showContextMenu).mouseout(function() { clearTimeout(sid); hid = setTimeout('hideContextMenu()', 400); });
    }
	
    $(window).resize(resize).trigger('resize');
});

function resize() {
    var h = $("#treecontainer").height()  - $('#taglistcontainer').height();
    $('#treenodecontainer').css('height', h);
}

//Перевод дерева в другой режим
function setMode(m) {
    switch (m) {
        case 'SELECTONE':
            mode = m;
            $('#popupcontainer').addClass('changed');
            break;
        default:
            mode = 'NORMAL';
            $('#popupcontainer').removeClass('changed');
            break;
    }
}

function expand(id, reload, skiptoggle) {
    parent.parent.document.getElementById("selectedfolderid").value = id;
    var li = $('li#node_' + id);
    var params = '?parentid='+id+'&mode=' + mode;
    var url = base + 'kb.ivp/node' + params;
    if (!reload && li.find('div.children').length > 0) {
        if(!skiptoggle) li.find('>div.children').toggle();
        syncImage(id);
    }
	//закомментировал, т.к. в данный момент дерево полность загружается при первом обращении
    else {
        $('li#node_' + id + '>.children').remove();
        li.append('<div class="children"></div>');
        var div = li.find('div.children');
        div.load(url, { timestamp: new Date().toString(), nolayout: true }, function() { syncImage(id); if (canedit && mode == 'NORMAL') { $('.node>a.link>span.cm', div).click(showContextMenu).mouseout(function() { clearTimeout(sid); hid = setTimeout('hideContextMenu()', 400); }); } });
    }
    return false;
}

function syncImage(id) {
    var li = $('li#node_' + id);
    var a = li.find('a.nodeicon:first');
    var img = a.find('img:first');
    var id = getId(a.parents('li.tn:first').attr('id'));
    
    //Есть дочки и они видны
    if (li.find('div.children .node').length > 0) {
        if (li.find('div.children').is(':visible'))
            img.attr('src', 'img/tree/minus.gif');
        else
            li.find('a.nodeicon:first > img').attr('src', 'img/tree/plus.gif');
    }
    else
        li.find('a.nodeicon:first > img').attr('src', 'img/_.gif');
}

//Вызывается при клике на название актива
function select(link, skipexpand) {
    link = $(link);
    parent.parent.document.getElementById("selectedfolderid").value = link.attr('nodeid');
	parent.parent.document.getElementById("_folderid").value = link.attr('nodeid');
    if (!skipexpand) expand(link.attr('nodeid'), false, true);
    switch (mode) {
        case 'SELECTONE':
            if (parent.frames.kb.setParent(link.attr('nodeid'), link.attr('path'), link.attr('breadcrumbs')))
                setMode('NORMAL');
            return false;
        default:
            $('a.selected').removeClass('selected');
            link.addClass('selected').blur();
			resetSearchMode();
            return true;
    }
}

function resetSearchMode() {
    var parentFrame = window.parent.parent;
    var doc = parentFrame.document;	
	parentFrame.resetSearchOptions('folder');	
	return false;
}

function hideContextMenu() {
    $('.contextmenu').hide();
}

function showContextMenu() {
    var id = getId($(this).parents('.tn:first').attr('id'));
    clearTimeout(hid);
    hideContextMenu();
    var nodeid = '#node_' + id;

    var link = $(nodeid).find('a.link:first').get(0);
    select(link,true);

    var popuppath = nodeid + '>.node>.contextmenu';
    var node = $(nodeid).children('.node');
    if ($(popuppath).length == 0) {
        var popup = node.append('<ul class="contextmenu"></ul>').children('.contextmenu');
        popup.append('<li onclick="return createChild(' + id + ')">' + KBResources.NewSection + '</li>');
        //popup.append('<li onclick="return createDocument(' + id + ')"">' + KBResources.AddDocument + '</li>');
        popup.append('<li onclick="return deleteKB(' + id + ')">' + KBResources.DeleteSection + '</li>');
        $(popuppath).mouseover(function() { clearTimeout(hid); }).mouseout(function() { hid = setTimeout('hideContextMenu()', 500); });
    }
    var hoverpath = nodeid + '>.node>.link>.hover';
    var offset = $(hoverpath).offset();
    $(popuppath).css('left', offset.left+2).css('top', offset.top+5).show();
    return false;
}

function createChild(id) {
    var url = base + 'kb.ivp/create?parentid=' + id;
    parent.frames.kb.document.location.href = url
    return false;
}

function createDocument(id) {
    var url = base + 'kbdocument.ivp/create?parentid=' + id;
    parent.frames.kb.document.location.href = url
    return false;
}

function deleteKB(id) {
    if (!confirm(KBResources.SureDeleteSection)) return false;
    $.getJSON(base + 'kb.ivp/delete', { id:id, json: true, timestamp: new Date().toString() }, kbDeleted);
    return false;
}
	
function kbDeleted(result) {
    if (!result.IsOK) alert(result.Description);
    else {
        $('#node_' + result.Id).remove();
        parent.frames.kb.document.location.href = 'about:blank';
    }
}

function tagSearch(id, value) {
    var parentFrame = window.parent.parent;
    var doc = parentFrame.document;

    //удалим существующие теги поиска
    parentFrame.removeAllSearchTags();

    //добавим выбранный тег
    var arr = new Array();
    arr.push(value);
    arr.push(id);
    parentFrame.searchTagSelected(arr);
        
    return false;
}

