bannerNav = {};

(function () {
	var item = 0,
	busy = false,
	paused = true,
	interval = null,
	animationSpeed = 0.6,
	animationInterval = 6,
	menuOpacityOff = 0.75,
	menuOpacityOn = 1,
	jQuery_banner,
	jQuery_banner_each,
	jQuery_banner_menu,
	jQuery_banner_item,
	jQuery_banner_play,
	jQuery_banner_img = new Image();

	jQuery(document).ready(
		function () {
			jQuery_banner = jQuery('#banner-nav');

			if (!jQuery_banner.length) {
				return;
			}

			jQuery_banner_each = jQuery_banner.children('.banner');
			jQuery_banner_menu = jQuery_banner.children('.menu');
			jQuery_banner_item = jQuery_banner_menu.children('.item');
			jQuery_banner_play = jQuery_banner_menu.children('.playpause');

			item = Math.round(Math.random() * jQuery_banner_each.length) - 1;

			bannerNav.toBanner = function (to, animationTime) {
				if (busy || item === to) {
					return;
				} else {
					busy = true;
				}

				jQuery_banner_item.eq(item).removeClass('selected');
				jQuery_banner_item.eq(to).addClass('selected').css('opacity', 0).css('opacity', 1).blur();

				jQuery_banner_each.eq(to).css('zIndex', 3).animate(
					{
						opacity: 1
					},
					animationTime,
					function () {
						jQuery_banner_each.eq(item).css(
							{
								opacity: 0,
								zIndex: 1
							}
						);

						jQuery_banner_each.eq(to).css('zIndex', 2);

						item = to;
						busy = false;
					}
				);
			};

			bannerNav.setInterval = function () {
				jQuery_banner_play.removeClass('paused');

				paused = false;

				interval = setInterval(
					function () {
						bannerNav.toBanner(item + 1 > jQuery_banner_each.length - 1 ? 0 : item + 1, animationSpeed * 1000);
					},
					animationInterval * 1000
				);
			};

			bannerNav.clearInterval = function () {
				jQuery_banner_play.addClass('paused');

				paused = true;

				clearInterval(interval);
			};

			bannerNav.playpause = function () {
				if (paused) {
					setTimeout(
						function () {
							bannerNav.next(animationSpeed * 1000);
						},
						250
					);					
				} else {
					bannerNav.clearInterval();
				}
			};

			bannerNav.prev = function (animationTime) {
				bannerNav.clearInterval();
				bannerNav.toBanner(item - 1 < 0 ? jQuery_banner_each.length - 1 : item - 1, animationTime || 1);
				bannerNav.setInterval();
			};

			bannerNav.next = function (animationTime) {
				bannerNav.clearInterval();
				bannerNav.toBanner(item + 1 > jQuery_banner_each.length - 1 ? 0 : item + 1, animationTime || 1);
				bannerNav.setInterval();
			};

			jQuery_banner_item.eq(item).addClass('selected');

			jQuery_banner_menu.css('opacity', menuOpacityOff);

			jQuery_banner_img.onload = function () {
				jQuery_banner.bind(
					'mouseenter',
					function () {
						jQuery_banner_menu.animate(
							{
								opacity: menuOpacityOn
							},
							150
						)
					}
				).bind(
					'mouseleave',
					function () {
						jQuery_banner_menu.animate(
							{
								opacity: menuOpacityOff
							},
							300
						);
					}
				);

				jQuery_banner_each.eq(item).css(
					{
						opacity: 1,
						zIndex: 2
					}
				);

				bannerNav.setInterval();
			};

			if (item < 0) {
				item = 0;
			}

			jQuery_banner_img.src = jQuery_banner_each.eq(item).css('background-image').replace(/^.*url\("{0,}|"{0,}\).*$/g, '');
		}
	);
}());
