var MOST_PRIORITY_CATEGORY = 60; 
var MAP_CAT_PREVIEWS = [{cat:15, img:'img/adultcont.jpg'}, {cat:223, img:'img/darwincontr.jpg'}];  
var BOOKMARKS = 'מועדפים';        
var THERE_ARE_NO_FOLDERS = 'לא נמצאו תיקיות';               
var SEARCH_RESULTS = 'תוצאות חיפוש';   
var ID_NO_FOLDERS = -0x7FFFFFFF;
var IMPORT_EXPORT_CAT = -0x7BEEBABE;
var IMPORT_EXPORT_CAT_NAME = 'Import/Export';    
var HIDE_DEAD_LINKS_THRESHOLD = 1;    

function find_pop(db_pop, id)
{   for (var i=0; i<db_pop.length; i++) if (db_pop[i].cat == id) return db_pop[i].links;
    return [];
}

/* icons */
var icons = (';'+document.cookie+';').match(/;\s*icons=(\d+);/);
if (icons) icons=icons[1]; else icons=0;
function get_icons_html()
{   var html = '';
    for (var i=0, j=1; i<db_sec_cats.length; i++, j<<=1)
    {   var cat_name = db_sec_cats[i].name;
        html += '<img style="cursor:pointer" src="icons/'+i+(icons&j ? 'a' : '')+'.gif" id="icon_'+i+'" onclick="switch_icon('+i+')" onmouseover="show_baloon('+jsquote(cat_name)+')" onmouseout="hide_baloon()" /> ';
    }
    return html;
}
function switch_icon(n)
{   var icon = document.getElementById('icon_'+n);
    var enabled = (icon.src+'').indexOf('a.gif') != -1;
    if (enabled)
    {   icon.src = 'icons/'+n+'.gif';
        icons &= ~(1<<n);
    }
    else
    {   icon.src = 'icons/'+n+'a.gif';  
        icons |= 1<<n;
    }
    document.cookie = 'icons='+icons;
    if (selected_subcat != -1) load_subcat_page(selected_subcat);
}
function find_icon(cats, icons)
{   L:for (var j=0, k=1; j<db_sec_cats.length; j++, k<<=1)
    {   if (icons & k)
        {   for (var i=0; i<cats.length; i++)
            {   if (cats[i] == db_sec_cats[j].id) continue L;
            }
            return false;
        }
    }
    return true;
}

/* pop up links belonging to MOST_PRIORITY_CATEGORY */
function filter_links(db_links, with_priority, order_by, desc)
{   if (desc == null) desc = true; /* true by default */
    var db_links2 = [];
    for (var i=0; i<db_links.length; i++)
    {   if (find_icon(db_links[i].cats, icons))
        {   if (db_links[i].dead < HIDE_DEAD_LINKS_THRESHOLD)
            {   db_links2[db_links2.length] = db_links[i];
            }
        }
    }
    if (with_priority)
    {   var db_links3 = [];
        for (var p=0; p<2; p++) /* show MOST_PRIORITY_CATEGORY first */
        {   for (var i=0; i<db_links2.length; i++)
            {   with (db_links2[i])
                {   var has_most_priority = false;
                    for (var h=0; h<cats.length; h++)
                    {   if (cats[h] == MOST_PRIORITY_CATEGORY) has_most_priority = true;
                    }
                    if (p==0 && !has_most_priority || p==1 && has_most_priority) continue;
                    db_links3[db_links3.length] = db_links2[i];
                }
            }
        }
        db_links2 = db_links3;
    }     
    if (desc || order_by=='date' || order_by=='clicks' || order_by=='cpd' || order_by=='rate' || order_by=='smart')
    {   desc = desc ? 1 : 0;
        for (var i=0; i<db_links2.length; i++)
        {   for (var j=i+1; j<db_links2.length; j++)
            {   var first = db_links2[j][order_by];
                var second = db_links2[i][order_by];
                if (order_by == 'rate')
                {   if (first <= 0) first = db_links2[j]['smart'];
                    if (second <= 0) second = db_links2[i]['smart'];
                }
                if ((first < second) ^ desc)
                {   var temp = db_links2[i];
                    db_links2[i] = db_links2[j];
                    db_links2[j] = temp;
                }
            }
        }
    }
    return db_links2;
}

/* copy cats from db.cats that have cl==0 to db_cats and copy cats that have cl==1 to db_sec_cats */
var db_cats = [];
var db_pop_links = [];     
var db_sec_cats = [];
if (window.db && window.db.cats)
{   for (var i=0; i<db.cats.length; i++)
    {   if (db.cats[i].cl == 0)
        {   db_cats[db_cats.length] = db.cats[i];
            var cat_img = '';
            for (var j=0; j<MAP_CAT_PREVIEWS.length; j++)
            {   if (db.cats[i].id == MAP_CAT_PREVIEWS[j].cat) cat_img = MAP_CAT_PREVIEWS[j].img;
            }
            if (window.db_pop)
            {   var links = find_pop(db_pop, db.cats[i].id);
                for (var j=0; j<links.length; j++)
                {   links[j] = cat_img || ('th/'+links[j]+'.jpg');
                }
                db_pop_links[db_pop_links.length] = links;
            }
        }
        else if (db.cats[i].cl == 1)
        {   db_sec_cats[db_sec_cats.length] = db.cats[i];
        }
    }
}

/* add bookmarks category */
if (window.db_bookmark_folders)
{   var cats = new Array(db_cats.length+1);
    var links = new Array(db_cats.length+1);
    cats[0] = {id:-4, name:BOOKMARKS, subcats:[]};
    for (var i=0; i<db_bookmark_folders.length; i++)
    {   cats[0].subcats[i] = {id:-5-i, name:db_bookmark_folders[i].name, subcats:[], links:db_bookmark_folders[i].links||[], parent:cats[0]};
        for (var j=0; j<db_bookmark_folders[i].sub.length; j++)
        {   cats[0].subcats[i].subcats[j] = {id:-10000-i*db_bookmark_folders.length-j, name:db_bookmark_folders[i].sub[j].name, subcats:[], links:db_bookmark_folders[i].sub[j].links||[], parent:cats[0].subcats[i]};
        }
    }
    if (cats[0].subcats.length == 0) cats[0].subcats[0] = {id:ID_NO_FOLDERS, name:THERE_ARE_NO_FOLDERS, subcats:[], links:[], parent:cats[0]};
    cats[0].subcats[cats[0].subcats.length] = {id:IMPORT_EXPORT_CAT, name:IMPORT_EXPORT_CAT_NAME, subcats:[], links:[], parent:cats[0]};
    links[0] = ['img/nopreview.jpg'];
    for (var i=0; i<db_cats.length; i++)
    {   cats[i+1] = db_cats[i];
        links[i+1] = db_pop_links[i];
    }
    db_cats = cats;
    db_pop_links = links;
}

/* bookmarks */
function get_bookmarks_path(cat)
{   return (cat.parent && cat.parent.id<-4 ? cat.parent.name+'/' : '') + cat.name;
}
function get_bookmarks_folders_html()
{   var html = '';
    if (window.db_bookmark_folders)
    {   for (var f=0; f<db_bookmark_folders.length; f++)
        {   var name = db_bookmark_folders[f].name;
            html += '<option value="'+jshtml(name)+'">'+jshtml(name)+'</option>';
            for (var f2=0; f2<db_bookmark_folders[f].sub.length; f2++)
            {   var name = db_bookmark_folders[f].name + '/' + db_bookmark_folders[f].sub[f2].name;
                html += '<option value="'+jshtml(name)+'">'+jshtml(name)+'</option>';
            }
        }
    }
    return html;
}

/* add search category */
if (window.db_search_links)
{   var cats = new Array(db_cats.length+1);
    var links = new Array(db_cats.length+1);
    cats[0] = {id:-2, name:SEARCH_RESULTS, subcats:[{id:-3, name:param('phrase'), subcats:[], links:db_search_links, parent:cats[0]}]};
    if (db_search_total_links == 0) links[0] = ['img/nopreview.jpg'];
    else links[0] = ['th/'+db_search_links[0].id+'.jpg'];
    for (var i=0; i<db_cats.length; i++)
    {   cats[i+1] = db_cats[i];
        links[i+1] = db_pop_links[i];
    }
    db_cats = cats;
    db_pop_links = links;
}
