/*
 * jQuery.Train - Train jQuery slider.
 * Date: 11.03.2010
 * @author Dragos Ungur
 * @mail dragos.ungur@design19.ro
 * @version 1.0
 */

(function ($) {
    $.fn.jtrain = function (custom) {
        var defaults = {
            weight: 780,
            height: 300,
            opacity: 0.6,
            delay: 5000,
            speed: 1000
        };
        $.extend(defaults, custom);
        var block = this,
            slider_l, slider = $('ul', block),
            slider_r, animation_wrk = false,
            page_w = $(window).width(),
            left = (page_w - defaults.weight) / 2,
            width = defaults.weight - left,
            kid = 1,
            kids = slider.children().size() + 1;
        slider_l = block.clone();
        block.before(slider_l);
        $(slider_l).addClass('left').css({
            'position': 'absolute',
           // 'left': '-' + width + 'px',
            //'top': '0px',
            //'opacity': defaults.opacity
        });
        slider_r = block.clone();
        block.after(slider_r);
        $(slider_r).addClass('right').css({
            'position': 'absolute',
           // 'width': left + 'px',
           // 'right': '0px',
           // 'top': '0px',
           // 'opacity': defaults.opacity
        });
        $(block).css({
            left: left + 'px'
        });
        var sld_l = $('ul', slider_l).children().eq(kids - 1).clone();
        $('ul', slider_l).prepend(sld_l);
        var sld = slider.children().eq(0).clone();
        slider.append(sld);
        var sld_r = $('ul', slider_r).children().eq(0).clone();
        $('ul', slider_r).children().eq(0).remove();
        $('ul', slider_r).append(sld_r);
        sld_r = $('ul', slider_r).children().eq(0).clone();
        $('ul', slider_r).append(sld_r);
        html = '<p>';
        for (i = 0; i <= (kids - 2); i++) html += '<a href="#" ' + (i == 0 ? 'class="selected"' : '') + '></a>';
        html += '</p>';
        $(block).append(html);
        $('a', block).each(function (i) {
            $(this).attr('href', (i + 1)).click(function () {
                jtrain_start((i + 1));
                return false
            })
        });
        var jtrain_wrk = setInterval("jtrain_start();", defaults.delay);
        jtrain_start = function (id) {
            if (id) {
                clearInterval(jtrain_wrk);
                kid = id - 1
            }
            if (!animation_wrk) {
                animation_wrk = true;
                $('ul', slider_l).animate({
                    left: '-' + (kid * defaults.weight) + 'px'
                }, defaults.speed, function () {
                    if (kid == kids) {
                        $('ul', slider_l).css('left', '0px')
                    }
                });
                $('a', block).removeClass('selected');
                $('p', block).children().eq((kid >= (kids - 1) ? 0 : kid)).addClass('selected');
                slider.animate({
                    left: '-' + (kid * defaults.weight) + 'px'
                }, defaults.speed, function () {
                    if (kid == kids) {
                        slider.css('left', '0px')
                    }
                });
                $('ul', slider_r).animate({
                    left: '-' + (kid * defaults.weight) + 'px'
                }, defaults.speed, function () {
                    if (kid == kids) {
                        $('ul', slider_r).css('left', '0px');
                        kid = 1
                    }
                    animation_wrk = false
                });
                kid++
            }
        }
    }
})(jQuery);
