
window['Xaraya'] = window['Xaraya'] || {};

Xaraya.CompWidget = function () {

    var

        list = [],
        
        params = {
            id_image: 'comp_image',
            id_title: 'comp_title',
            interval: 4
        },

        random = function (limit) {
            return Math.floor(Math.random() * limit);
        },

        setParams = function (args) {
            args = args || {};
            params['id_image'] = args['id_image'] || params['id_image'];
            params['id_title'] = args['id_title'] || params['id_title'];
            params['interval'] = args['interval'] || params['interval'];
        },

        add = function (obj) {
            if (typeof obj != 'undefined')
                list.push(obj);
        },

        shuffle = function () {
             var rnd, art, result = [];

            while (list.length > 0) {
                rnd = random(list.length);
                art = list[rnd];
                list.splice(rnd, 1);
                result.push(art);
            }

            list = result; 
        },

        cur = 0, next = function () {
            var art = list[cur];

            cur++;
            if (cur == list.length)
                cur = 0;

            return art;
        },

        fet = 0, fetch = function () {
 
            fet = cur > 0 ? cur : fet;

            if(fet == list.length){
                fet = cur = 0;
                return false;
            }

            fet++;
            return next();
        },

        changeInfo = function () {
            var i = cur, art = next(), old;
            
            old = (i == 0 ? list.length : i) - 1;
            document.getElementById('comp_widget_' + old).style.display = 'none';
            document.getElementById('comp_widget_' + i).style.display = 'block';
            document.getElementById(params['id_title']).innerHTML = '<a href="' + art['url'] + '">' + art['title'] + '</a>';
            document.getElementById(params['id_title']).onclick = function () {document.location.href = art['url']}
        },

        init = function (args) {
            setParams(args);
            changeInfo();
            setInterval(changeInfo, params['interval'] * 1000);
        };

    return {
        add:        add,
        shuffle:    shuffle,
        setParams:  setParams,
        next:       next,
        fetch:      fetch,
        init:       init
    };

}();

