function load_bookmarks(bm_list) {

    try
    {
        html = "";
        o = bm_list.evalJSON();


        for(var i = 0;i<o.length;i++) {
            html += gen_bookmark_html(o[i].name,o[i].url,o[i].id);
        }
        //      alert("asdf");
        $("bookmarks_list").innerHTML = html;

    }
    catch(ex)
    {
        //alert(ex.message());
    }
}
function add_bookmark() {
    url = $('txt_bm_url').value;
    name = $('txt_bm_name').value;
    if((url.length==0) || (name.length==0)) { return; }
    ajax_add_bookmark(name, url);
    $('txt_bm_url').value = "";
    $('txt_bm_name').value = "";
    //alert(bm);
}
function delete_bookmark(id) {
    ajax_delete_bookmark(id);
}
function add_bookmark_callback(json_bookmark) {
    // alert(bm);
    // bm_id = parseInt(bm);
    bookmark = json_bookmark.evalJSON();
    $('bookmarks_list').insert(gen_bookmark_html(bookmark.name,bookmark.url,bookmark.id));
}

function gen_bookmark_html(name,url,id) {
    html = ""
    html += "<div bookmark_id='{2}'><a class='bookmark_link' href='{1}' target='_blank'>&nbsp;&nbsp;{0}&nbsp;&nbsp;</a>".format(name,url,id);
    html += "<a class='bm_action' onclick='javascript:delete_bookmark({0});' href='javascript:void(0);'>[&nbsp;-del&nbsp;]</a> ".format(id);
    html += "</div>"
    return html;
}
function find_bookmark(bm_id) {
    arr = $('bookmarks_list').descendants();
    //alert(bm_id);
    for(var i =0;i<arr.length;i++) {
        if (arr[i].getAttribute('bookmark_id') == bm_id) {
            return arr[i];
        }
    }
}
function delete_bookmark_callback(retval) {
    bm_id  = parseInt(retval)
    //alert(bm_id);
    if(bm_id > 0) {
        find_bookmark(bm_id).remove();
    }
    else {
        //do nothing, item was not deleted
    }
}
function toggle_bookmarks(anchor) {
    //    Cookie.init({name: 'bookmark_toggle', expires: 1000 });
    // alert(anchor);
    if($('bookmarks_form').style.visibility=="hidden") {
        $('bookmarks_form').style.visibility = "visible";
        $('div_bookmarks').style.borderWidth = '0px';
        anchor.innerHTML = "hide"
        Cookie.setData({name: GLOBAL_COOKIE_NAME},"tb","visible");
    } else {
        anchor.innerHTML = "show"
        $('bookmarks_form').style.visibility = "hidden";
        $('div_bookmarks').style.borderWidth = '0';
        Cookie.setData({name: GLOBAL_COOKIE_NAME},"tb","hidden");
    }
}

function ajax_load_bookmarks()
{

    new Ajax.Request('/bookmarks/index/{0}'.format($('searchcloud_id').value),
                     {
                         method:'get',
                         parameters: {
                             timestamp: new Date().getTime()
                         },
                         onSuccess: function(transport) {
                             //              alert(transport.responseText);
                             load_bookmarks(transport.responseText);//.evalJSON());
                         },
                         onFailure: function(transport)    {
                             //alert(transport.responseText);
                             //alert('Could not contact the server {0}'.format(transport.responseText));
                             return null;
                         }}
                    );
}

function ajax_add_bookmark(name,url)
{
    new Ajax.Request('/bookmarks/create',
                     {
                         method:'post',
                         parameters: { searchcloud_id: $('searchcloud_id').value, name: name, url: url},
                         onSuccess: function(transport) {
                             add_bookmark_callback(transport.responseText);
                         },
                         onFailure: function(transport)    {
                             //alert('Could not contact the server {0}'.format(transport.responseText));
                             return null;
                         }}
                    );
}

function ajax_delete_bookmark(id)
{
    new Ajax.Request('/bookmarks/delete',
                     {
                         method:'post',
                         parameters: { bm_id: id },
                         onSuccess: function(transport) {
                             delete_bookmark_callback(transport.responseText);
                         },
                         onFailure: function(transport)    {
                             //  alert('Could not contact the server {0}'.format(transport.responseText));
                             return null;
                         }}
                    );
}
