$(function () {
    jQuery('ul.tabset').jqueryTabs();
    InitSlider();
});
function InitSlider() {
    _speed = 800;
    _duration = 6000;
    var _t;
    var _hold = $('div.home-slider div.frame');
    var _slide = _hold.find('ul.list');
    var _list = _slide.find(' > li');
    var _d = _list.eq(1).outerWidth(true);
    var _vis = Math.ceil(_hold.width() / _d);
    var _ws = _list.length * _d;
    var _x = 0;
    for (var i = 0; i < _vis; i++) {
        _list.eq(i).clone().appendTo(_slide);
    };
    var i = _list.index(_list.filter('.active:eq(0)'));
    if (i == -1) i = 0;

    var _num = $('ul.slider-nav li');
    _num.each(function (_i, _this) {
        $(this).click(function () {
            if (_t) clearInterval(_t);
            _x = (_i) * _d;
            _num.removeClass('active');
            $(this).addClass('active');
            i = _i;
            RunAnimation(_x);
            return false;
        });
    });

    var _t;
    function runTimer() {
        if (_t) clearInterval(_t);
        _t = setInterval(function () {
            if (_x < _ws) {
                i++;
                _x = _x + _d;
                if (i == _num.length) { i = 0 }
                _num.removeClass('active').eq(i).addClass('active');
            }
            else {
                _slide.css({ marginLeft: 0 });
                _x = _d;
                i++;
                _num.removeClass('active').eq(i).addClass('active');
            };
            RunAnimation(_x);
        }, _duration);
    }
    runTimer();

    function RunAnimation(_x) {
        _slide.animate({ marginLeft: -_x }, { queue: false, duration: _speed, complete: function () {
            runTimer();
        } 
        });
    };
};

// jquery tabs plugin
jQuery.fn.jqueryTabs = function (_options) {
    // default options
    var _options = jQuery.extend({
        addToParent: false,
        holdHeight: false,
        activeClass: 'active',
        tabLinks: 'a.tab',
        fadeSpeed: 0,
        event: 'click'
    }, _options);

    return this.each(function () {
        var _holder = jQuery(this);
        var _fadeSpeed = _options.fadeSpeed;
        var _activeClass = _options.activeClass;
        var _addToParent = _options.addToParent;
        var _holdHeight = _options.holdHeight;
        var _tabLinks = jQuery(_options.tabLinks, _holder);
        var _tabset = (_addToParent ? _tabLinks.parent() : _tabLinks);
        var _event = _options.event;
        var _animating = false;

        // tabs init
        _tabLinks.each(function () {
            var _tmpLink = jQuery(this);
            var _tmpTab = jQuery(_tmpLink.attr('href'));
            var _classItem = (_addToParent ? _tmpLink.parent() : _tmpLink);
            if (_tmpTab.length) {
                if (_classItem.hasClass(_activeClass)) _tmpTab.show();
                else _tmpTab.hide();
            }
        });

        // tab switcher
        function switchTab(_switcher) {
            if (!_animating) {
                var _link = jQuery(_switcher);
                var _newItem = (_addToParent ? _link.parent() : _link);
                var _newTab = jQuery(_link.attr('href'));
                if (_newItem.hasClass(_activeClass)) return;

                var _oldItem = jQuery(_addToParent ? _tabset : _tabLinks).filter('.' + _activeClass);
                var _oldTab = jQuery(jQuery(_addToParent ? _oldItem.children('a') : _oldItem).attr('href'));
                if (_newTab.length) {
                    _animating = true;
                    if (_oldItem.length) {
                        _newItem.addClass(_activeClass);
                        _oldItem.removeClass(_activeClass);

                        var _parent = _oldTab.parent();
                        if (_holdHeight) _parent.css({ height: _parent.height() });

                        _oldTab.fadeOut(_fadeSpeed, function () {
                            _newTab.fadeIn(_fadeSpeed, function () {
                                _animating = false;
                            });
                            if (_holdHeight) _parent.css({ height: 'auto' });
                        });
                    } else {
                        _newItem.addClass(_activeClass);
                        _newTab.fadeIn(_fadeSpeed, function () {
                            _animating = false;
                        });
                    }
                }
            }
        }

        // control
        _tabLinks.each(function () {
            jQuery(this).bind(_event, function () {
                switchTab(this);
                return false;
            });
        });
    });
}
