
// Marks tree helpers

function marksShowTree()
{
    x = (window.screen.width - 600) / 2 + 100;
    y = (window.screen.height - 500) / 2;
    
    w = window.open("jcapmarks.aspx", "marks_" + rand(0x7fffffff),
        "left=" + x + ", top=" + y + ", width=600, height=500, status=0, toolbar=0, \
        location=0, menubar=0, directories=0, resizable=1, scrollbars=1");
}

function marksOpenHandler(openedID)
{
    if (marks.getOpenState(openedID) == 1)
    {
        s = marks.getSubItems(openedID);
        items = s.split(",");
        if (items[0].indexOf("preliminary") != -1)
        {
            marksFill(openedID); // Fill next level
        }
    }
}

function marksAddChild(parentID, ID, text)
{
    marks.insertNewChild(parentID, ID, text, 0, "folderClosed.gif", 0, 0, "CHILD");
    marksAddPreliminary(ID);
}

function marksAddItem(parentID, ID, text)
{
    marks.insertNewNext(parentID, ID, text, 0, "folderClosed.gif", 0, 0, "CHILD");
    marksAddPreliminary(ID);
}

function marksAddPreliminary(parentID)
{
    if (marks.getLevel(parentID) <= 3)
    {
        marks.insertNewChild(parentID, "preliminary", "Загрузка...", 0, "loading.gif", 0, 0, "CHILD");
        marks.closeItem(parentID);
    }
}

function marksRemovePreliminary(parentID)
{
    s = marks.getSubItems(parentID);
    items = s.split(",");
    if (items[0].indexOf("preliminary") != -1)
    {
        marks.deleteItem(items[0], parentID);
    }
}

function marksFill(parentID)
{
    JCAPMarks.GetMarks((parentID == "null") ? null : parentID, marksFillCallback);
}

function marksFillCallback(res)
{
    if (res != null)
    {
        v = res.value;
        parentID = (v[0][0] == null) ? "null" : v[0][0];
        marksRemovePreliminary(parentID);
                
        for(var i = 1; i < v.length; i++)
        {
            marksAddChild(parentID, v[i][0], v[i][1]);
        }
    }
}

function marksSelectHandler(selectedID)
{
    a = new Array();
    pID = selectedID;
    while (marks.getLevel(pID) > 1)
    {
        a.push(pID);
        pID = marks.getParentId(pID);
    }
    a.reverse();
    
    res = new String();
    for (idx = 0; idx < a.length; idx++)
    {
        res += marks.getItemText(a[idx]) + ((idx >= 1) ? "<br />" : " ");
    }
    
    if (window.opener != null)
    {
        window.opener.document.getElementById("current_mark_id").value = selectedID;
        window.opener.document.getElementById("current_mark").innerHTML = (res.length == 0) ? "Все марки" : res;
        window.opener.clearPartsTable();
    }
}

function marksSelectCloseHandler(selectedID)
{
    marksSelectHandler(selectedID);
    self.close();
}
