﻿var alist = {};
function historyToString( history_datas_set )
{
    var out_history = [];
    for (var hist_item in history_datas_set)
    {
        out_history.push(hist_item + '=' + history_datas_set[hist_item]);
    }
    return out_history.join('&');
}

function getHistory(history_hash)
{
    var hash_arr = history_hash.indexOf("&") > -1 ? history_hash.split('&'): null;
    var out_history = {};
    if (hash_arr != null)
    {
        for (var item_idx = 0 ; item_idx < hash_arr.length ; item_idx++)
        {
            var hist_item = hash_arr[item_idx].indexOf("=") > -1 ? hash_arr[item_idx].split('='): null;
            if (hist_item != null)
            {
                out_history[hist_item[0]] = hist_item[1];
            }
        }
    }
    else
    {
        out_history = null;
    }
        return out_history;
}


function manageTabClick(e ,tab_id, query_str)
{
        new Event(e).preventDefault();
        reqArticles(tab_id, query_str);
}

function reqArticles(tab_id, query_str)
{
        var order_fields = query2Array(query_str); 
        // Saving old tab setting before clearing, moving to new one
        var old_id = getCurrentTab();
        if (old_id != null)
        {
            alist.slider_history[old_id] = alist.page; 
        }

        clearSliderTabs();
        $(tab_id).className = 'current';
        alist.slider_history['selected'] = tab_id;
        dispArticles(alist, order_fields);
}

function query2Array(query_string)
{
    var query_datas = query_string.indexOf("&") > -1 ? query_string.split('&'): null;
    var out_datas = [];

        if (query_datas != null)
        {
            for (var item_idx = 0 ; item_idx < query_datas.length ; item_idx++)
            {
                var hist_item = query_datas[item_idx].indexOf("=") > -1 ? query_datas[item_idx].split('='): null;
                if (hist_item != null)
                {
                    out_datas[hist_item[0]] = hist_item[1];
                }
            }   
        }
    return out_datas;
}

function dispArticles(alist, req_params)
{
    // removing old params
    for (var old_param_item in alist.parameters)
    {
        alist.removeParameter(old_param_item);
    }
   
    for (var param_item in req_params)
    {
        if (typeof req_params[param_item] != 'function')
        {
            alist.setParameter(param_item, req_params[param_item]);
        }
    }



    var old_page = ((alist.slider_history[alist.slider_history['selected']] != undefined) ? alist.slider_history[alist.slider_history['selected']] : 1) - 0;
    if (alist.page == old_page)
    {
        // forcing refresh
        alist.update();
    }
    else
    {
        alist.slider.set( alist.convList2Slide( alist.convPage2List( old_page)));
        alist.render.delay(60, alist);
    }
}

function getCurrentTab()
{
    var tab_selected = $('articles_filter').getElements('span.current'); // Getting selected tab
    return  (tab_selected.length > 0) ? tab_selected[0].id : null;
}

function clearSliderTabs()
{
    $(document.body).getElements('span[id$=_articles_filter]').each(function(item, index){
        item.className = '';
    });
}

function goPage( alist, offset )
{
    alist.setPage(offset);
}

window.addEvent('domready', function () {

    alist = init_virtual_list($('vlist_identifier').value, $('vlist_url').value, $('vlist_total_cells').value);
    alist.setParameter('template', $('vlist_template').value);
    alist.setParameter('nb_rows', $('vlist_nb_rows').value);
    registerParams();


    if ($('vlist_save_search_params') != null)
    {
        alist.setParameter('save_search_params', $('vlist_save_search_params').value);
    }

    var tab_selected = getCurrentTab();
    var sel_fltr = (tab_selected != null) ? tab_selected :'date';

// cleaning hash history
    var clean_reg = new RegExp("#/", "g");
    var old_history = getHistory(window.location.hash.replace(clean_reg, ''));

    if (old_history != null)
    { 
        // restoring history
        alist.slider_history = old_history;
        var prev_selected = alist.slider_history['selected'];
        // fire event to get history back
        if (alist.slider_history['selected'] != '')
        {
             clearSliderTabs(); // we clear tabs to prevent losing history in reqArticles
             reqArticles(prev_selected, alist.reg_params[prev_selected]);
        }
    }
    else
    {
        alist.slider_history = {};
        alist.slider_history['selected'] = sel_fltr;
    }

// Connect little prev arrow
    $(document.body).getElements('a.virtual_list_left_button').addEvent('click', function (e){
        new Event(e).preventDefault();
        goPage(alist, -1);
        });

// Connect little next arrow
    $(document.body).getElements('a.virtual_list_right_button').addEvent('click', function (e){
        new Event(e).preventDefault();
        goPage(alist, 1);
        });

    prevText='Faire défiler vers la gauche';
    $('bigbtn_prev').setProperties({title:prevText,alt:prevText}).addEvent('click', function(e){
        new Event(e).preventDefault();
        goPage(alist, -1);
        });

    nextText='Faire défiler vers la droite';
    $('bigbtn_next').setProperties({title:nextText,alt:nextText}).addEvent('click', function(e){
        new Event(e).preventDefault();
        goPage(alist, 1);
        });
});
