
$.fn.monobind = function(eventType, callback) {
  return this.unbind(eventType, callback).bind(eventType, callback);
};

function InitCarousel() {
	$('.carousel').jCarouselLite({
		btnPrev: '.next',
		btnNext: '.prev',
		circular: true
	});
}

var Rotator = {
    Time: 8000,
    IsRunning: false,
    Slides: $('.slide', '#hero'),
    Start: function(slides, i) {
        var index = i ? i : 0,
			slide = $(slides[index]);
        slide.fadeIn(1000);
        setTimeout(function() {
            if (Rotator.IsRunning) {
                slide.fadeOut(1000);
                var newIndex = index + 1 > slides.length - 1 ? 0 : index + 1;
                Rotator.AdvanceNav(newIndex);
                Rotator.Start(slides, newIndex);
            }
            else {
                return;
            }
        }, Rotator.Time);
    },

    Stop: function() {
        Rotator.IsRunning = false;
    },

    OnClickNavButton: function(e) {
        e.preventDefault();
        var btn = $(this);
        if (!btn.hasClass('active')) {
            var index = btn.attr('class').split('-')[1];
            Rotator.Stop();
            btn.parents('ul:first').find('a').removeClass('active');
            btn.addClass('active');
            Rotator.Slides.hide();
            $(Rotator.Slides[index]).show();
        }
        else {
            return;
        }

    },
    AdvanceNav: function(i) {
        var btns = $('.navList a').removeClass('active');
        $(btns[i]).addClass('active');
    },
    GenerateNav: function(amt) {
        var list = $('<ul></ul>').addClass('navList');
        list.insertAfter('.rotator');
        for (var i = 0; i < amt; i++) {
            var nav = $('<li></li>')
				.addClass('nav')
				.html('<a class="button-' + i + '" href="">button</a>');
            nav.appendTo(list);
        }
        $('.navList a').click(Rotator.OnClickNavButton);
    },

    Init: function() {
        var slides = $(Rotator.Slides).css({ 'display': 'none' }),
			startIndex = 0;
        if (slides.length < 2) {
            $(slides[0]).css({ 'display': 'block' });
            return;
        }
        else {
            Rotator.GenerateNav(slides.length);
            Rotator.IsRunning = true;
            Rotator.AdvanceNav(startIndex);
            Rotator.Start(slides, startIndex);
        }
    }
}

$(document).ready(function() {
	Rotator.Init();
	InitCarousel();
	document.body.className = document.body.className.indexOf('scriptDisabled') > -1 ? document.body.className.replace(/scriptDisabled/, 'scriptEnabled') : document.body.className + ' scriptEnabled';
});

