//
// Add links list.
//
function add_llist()
{
    var f = document.forms['form_add_llist'];
    var block_title = f.block_title.value;
    var link_type = $("input[@name='add_link_type']:checked").val();
    var link_title = f.link_title.value;
    var link_url = f.link_url.value;
    var link_file = f.link_file.value;
   
    //
    // Error cases.
    //
    if 
    (
        block_title == '' ||    
        link_title == '' ||    
        (link_type == LINK_TYPE_URL && link_url == '') ||
        (link_type == LINK_TYPE_FILE && link_file == '')
    )
    {
        my_alert('all field are must');
        return false;
    }
    
    //
    // Send request.
    //
    $('#button_add_llist').hide();
    $('#saving_add_llist').show();
    f.submit();

    return false;
}

//
// Displays edit llist form.
//
function display_edit_llist_form(block_id)
{
    var f = document.forms['form_llist'];
    f.block_id.value = block_id;
    f.block_title.value = $('#mblock_title_'+block_id).html();
    
    display_llist_links_for_editing(block_id);
}

function display_llist_links_for_editing(block_id)
{           
    //
    // Display thumbnails.
    //
    var html = "<ul id='llist_links_"+block_id+"'>"; // This ID is used to refer to it for sorting.

    $('#mblock_code_'+block_id).find('a').each(
        function()
        {   
            var href = $(this).attr("href");
            var ind = $(this).attr("ind");
            var link_title = $(this).html();
            
            html += "" +

                "<li "+
                    "class='link handle' id='"+ind+"' "+
                    "ondblclick='" +
                        "$(this).parent().children().removeClass(\"selected\");" +
                        "$(this).addClass(\"selected\");" +
                        "$(\"#edit_llist_title\").hide();" +
                        "$(\"#add_llist_link\").hide();" +
                        "$(\"#edit_llist_link\").show(200);" +
                        "document.forms[\"form_llist\"].link_ind.value = \""+ind+"\";" +
                        "document.forms[\"form_llist\"].link_title2.value = \""+q_escape(link_title)+"\";" +
                        "location.href=\"#form_llist\";" +
                    "' " +
                ">"+
                    link_title +
                "</li>";
        }
    );
    
    html += "</ul>";

    $('#llist_links').html(html);

    //
    // make links sortable.
    // See: http://docs.jquery.com/UI/Sortable
    //
    $('#llist_links_'+block_id).sortable(
    { 
        items: '.handle',
        opacity: 0.6,
        revert: true,
        axis: 'y',
        containment: $("#form_llist"),
        /*dropOnEmpty: false,
        tolerance: 'pointer',*/
        
        update : function () 
        {
            var inds = $('#llist_links_'+block_id).sortable('toArray');
            var data = 'action=ajax_update_llist_links_order&'+FLD_BLOCK_ID+'='+block_id+'&inds='+inds;
            var code = "display_llist("+block_id+", %%%);";
            code += "display_llist_links_for_editing("+block_id+")"; // To re relate index to link.

            ajax(data, code, '');
        } 
    }); 
    
}

//
// Display add link form.
//
function display_add_llist_link_form()
{
    $('#edit_llist_title').hide(); 
    $('#edit_llist_link').hide(); 
    $('#add_llist_link').toggle(200)
    
    var f = document.forms['form_llist'];
    f.link_title.value = '';
    f.link_url.value = '';
}

//
// Updates list title.
//
function update_llist_details()
{
    var f = document.forms['form_llist'];
    var block_title = f.block_title.value;
   
    if (block_title == '')
    {
        my_alert('all field are must');
        return false;
    }
    
    var block_id = get_form_field('form_llist', FLD_BLOCK_ID);

    f.action.value = 'ajax_update_llist_details';
    var data = $("#form_llist").serialize();  
    
    var code = "display_llist("+block_id+", %%%);";
    code += "$('#edit_llist_title').hide(200);";
    code += "close_modals();"

    ajax(data, code, '', "button_llist_title", "saving_llist_title");
    
    return false;
}

//
// Delete list.
//
function del_llist()
{                  
    var f = document.forms['form_llist'];
    var block_title = f.block_title.value;
    var block_id = f.block_id.value;
       
    if (confirm(translate('should I delete the links list')+' '+block_title+'?'))
    {
        f.action.value = 'ajax_del_llist';
        var data = $("#form_llist").serialize();  
        var code = "hide_block("+block_id+");";
        
        ajax(data, code, "");
    }
    
    return false;
}

//
// Add link
//
function add_llist_link()
{
    var f = document.forms['form_llist'];
    
    var link_type = $("#form_llist input[@name='edit_link_type']:checked").val();
    var link_title = f.link_title.value;
    var link_url = f.link_url.value;
    var link_file = f.link_file.value;
    var block_id = f.block_id.value;
    
    //
    // Error cases.
    //
    if 
    (
        link_title == '' ||    
        (link_type == LINK_TYPE_URL && link_url == '') ||
        (link_type == LINK_TYPE_FILE && link_file == '')
    )
    {
        my_alert('all field are must');
        return false;
    }
    
    //
    // Send request.
    //
    if (link_type == LINK_TYPE_URL)
    {
        f.action.value = 'ajax_add_llist_link';
        var data = $("#form_llist").serialize();
        var code = "$('#add_llist_link').hide(200);";  
        code += "display_llist("+block_id+", %%%);";  
        code += "display_llist_links_for_editing("+block_id+");";  
        ajax(data, code, "", "button_add_llist_link", "saving_add_llist_link");
    }

    else
    {
        $('#button_add_llist_link').hide();
        $('#saving_add_llist_link').show();
        f.action.value = 'add_llist_link';
        f.submit();
    }

    return false;
}

//
// Delete link.
//
function del_llist_link()
{
    var f = document.forms['form_llist'];
    var link_title = f.link_title2.value;
    var block_id = f.block_id.value;
    
    f.action.value = 'ajax_del_llist_link';
    var data = $("#form_llist").serialize();  

    var code = "$('#edit_llist_link').hide(); ";
    code += "if (%%% == 0) {hide_block("+block_id+"); close_modals();}";
    code += "else { ";
        code += "display_llist("+block_id+", %%%);";  
        code += "display_llist_links_for_editing("+block_id+");";  
        code += "}";

    ajax(data, code, '', 'button_del_llist_link', 'saving_del_llist_link');
    
    return false;
}

//
// Update llist link data (currently only
// its title is editable).
//
function update_llist_link()
{
    var f = document.forms['form_llist'];
    var block_id = f.block_id.value;
    
    f.action.value = 'ajax_update_llist_link';
    var data = $("#form_llist").serialize();  
    var code = "display_llist("+block_id+", %%%);";
    code += "$('#edit_llist_link').hide();";
    code += "display_llist_links_for_editing("+block_id+");";
    
    ajax(data, code, '', 'button_edit_llist_link', 'saving_edit_llist_link');
    
    return false;
}

//
// Displays list.
//
function display_llist(block_id, block_data)
{
    var code_obj = eval_json(block_data.code);
    var title = block_data.title;
    
    update_block_code(block_id, gen_html_llist(block_id, code_obj));
    update_block_title(block_id, title);
}

function gen_html_llist(block_id, list)
{
    var llist_wlib;
    var links, link, link_title, link_url, alt;
    var html = '';
    
    //
    // Set gallery web-library.
    //
    if (IS_CLIENT && IS_SW_MODE)
    {
        llist_wlib = document.forms['form_llist'].llist_wlib.value;
    }
    
    else
    {
        var is_home_page = (PAGE_LIB_NAME == 'home/');
        llist_wlib = is_home_page ? PAGE_LIB_NAME + LINKS_LIB_NAME : LINKS_LIB_NAME;
    }
    
    //
    // Display links.
    //
    links = list.links;

    html += '<ul class="links_list">';

        for (var ind in links)
        {
            link = links[ind];
            link_title = link['title'];
            link_url = link['url'];
            
            link_title = utf8_decode(base64_decode(link_title));
            link_title = link_title.replace(/\\(['"])/g, "$1");
            
            if ( ! link_url.match(/^http/))
            {
                link_url = llist_wlib + link_url;
            }
            
            html += '<li><a href="'+link_url+'" ind="'+ind+'" target="_blank">'+link_title+'</a></li>';
        }
    
    html += '</ul>';
    
    return html;
}

