function flag(pid)
{
    addFlaggedItem(pid);
    updateFlaggedItems();
}

function unflag(pid)
{
    removeFlaggedItem(pid);
    updateFlaggedItems();
}

function getFlaggedCookie()
{
    var cookies = document.cookie;
    var pos = cookies.indexOf('flagged=');
    
    if(pos != -1)
    {
        var off = pos + 8;
        var end = cookies.indexOf(';', off);

        if(end == -1)
            end = cookies.length;

        return unescape(cookies.substring(off, end));
    }
    
    return '';
}

function getFlaggedItems()
{
    try {
        return JSON.parse(getFlaggedCookie());

    } catch(e) {
        return {};
    }
}

function setFlaggedItems(items)
{
    var value = JSON.stringify(items);
    document.cookie = 'flagged=' + escape(value);
    updatePrintLink();
}

function addFlaggedItem(pid)
{
    var items = getFlaggedItems();
    
    if(pid in items)
        return;
    
    items[pid] = 1; //[kind, name];
    setFlaggedItems(items);
}

function removeFlaggedItem(pid)
{
    var items = getFlaggedItems();
    
    if(pid in items)
    {
        delete items[pid];
        setFlaggedItems(items);
    }
}

function updateFlaggedItems()
{
    updatePrintLink();
}

function clearFlaggedItems()
{
    setFlaggedItems({});
    clearSelectionsFromMenu();
    clearSelectionsFromMain();
    updateFlaggedItems();
    
    return false;
}

function updatePrintLink()
{
    var text = document.getElementById('print-text');
    var unit = document.getElementById('print-unit');
    var anchor = document.getElementById('print-link');
    var dload = document.getElementById('print-download');
    var reset = document.getElementById('print-reset');
    var items = getFlaggedItems();
    var pids = [];
    
    for(var pid in items)
        pids.push(pid);
    
    anchor.href = 'print.php?items=' + escape(pids.join('+'));
    
    if(pids.length == 0) {
        dload.style.display = 'none';
        reset.style.display = 'none';

    } else {
        dload.style.display = 'block';
        reset.style.display = 'block';
    }

    if(pids.length == 1) {
        text.innerHTML = '1';
        unit.innerHTML = 'exhibit';

    } else {
        text.innerHTML = pids.length;
        unit.innerHTML = 'exhibits';
    }
}
