(function ($) {
	var main = mm.extend({
		//切り替わり始めのタイムラグ(ミリ秒)
		initChangeTime: 700,
		//切り替わりの間隔(ミリ秒 ※changeTime > fadeSpeed)
		changeTime: 5000,
		//消えて行くスピード(ミリ秒 ※changeTime > fadeSpeed)
		fadeSpeed: 500,
		
//=========================================================================================//
		
		lock:  false,
		timeoutTimer: null,
		intTimer: null,
		num: 0,
		show: null,
		showBg: null,
		
		init: function () {
			this.setClass();
			this.setZIndex();
			this.ctrl();
			this.initSetTimeout();
		},
		
		setClass: function () {
			this.each($('ul#frm-main-images li'), function (i, li) {
				li = $(li);
				li.addClass('image_' + i);
				var rel = li.find('a').attr('rel');
				
				var _li = $('<li class="image_' + i + '"></li>');
				_li.css({backgroundImage: 'url(' + rel + ')'});
				
				$('div#frm-main-bg ul').append(_li);
			});
		},
		
		setZIndex: function () {
			this.each($('ul#frm-main-images li'), function (i, li) {
				li = $(li);
				li.css({zIndex: (4-i) * 100});
			});
			this.each($('div#frm-main-bg ul li'), function (i, li) {
				li = $(li);
				li.css({zIndex: (4-i) * 100});
			});
		},
		
		initSetTimeout: function () {
			this.timeoutTimer = setTimeout(this.bind(function () {
				var ul = $('ul#frm-main-images');
				var bg = $('div#frm-main-bg ul');
				
				ul.find('li:first').fadeIn(this.fadeSpeed,this.bind(function (li) {
					this.show = $(li);
				}));
				bg.find('li:first').fadeIn(this.fadeSpeed,this.bind(function (li) {
					this.showBg = $(li);
				}));
				
				this.initSetTimer();
			}), this.initChangeTime);
			
		},
		
		initSetTimer: function () {
			this.intTimer = setInterval(this.bind(function () {
				this.changeMain();
			}), this.changeTime);
		},
		
		changeMain: function () {
			var ul = $('ul#frm-main-images');
			var bg = $('div#frm-main-bg ul');
			
			this.num++;
			if (this.num > 3)
				this.num = 0;
			
			if (this.show)
				this.show.fadeOut(this.fadeSpeed);
			if (this.showBg)
				this.showBg.fadeOut(this.fadeSpeed);
			
			ul.find('li.image_' + this.num).fadeIn(this.fadeSpeed, this.bind(function (li) {
				this.show = $(li);
				this.lock = false;
			}));
			bg.find('li.image_' + this.num).fadeIn(this.fadeSpeed, this.bind(function (li) {
				this.showBg = $(li);
				this.lock = false;
			}));
			
			$('div#frm-main-cursor').stop().animate({left: 15 + (this.num * 50)}, this.fadeSpeed);
		},
		
		ctrl: function () {
			var ul = $('div#frm-main-ctrl ul');
			
			ul.find('li a').click(this.bind(function (a) {
				if (this.lock)
					return false;
				this.lock = true;
				
				clearInterval(this.intTimer);
				clearTimeout(this.timeoutTimer);
				
				this.num = parseInt($(a).attr('class').replace(/ctrl_/, '')) -1;
				
				this.changeMain();
				this.initSetTimer();
				return false;
			}));
		}
	});
	
	$(main.bind(main.init));
})(jQuery);
