var mooSlide = new Class(
		{
			initialize : function(containerSelector, slideSelector, contentTag) {
				var self = this;
				if (!$type(containerSelector) || !$type(slideSelector)) {
					return;
				}
				this.containerSelector = containerSelector;
				this.slideSelector = slideSelector;
				this.contentTag = contentTag;
				if ($type(contentTag)) {
					$$(containerSelector + ' > ' + slideSelector).each(
							function(item) {
								if (!$chk(item.getElement(contentTag))) {
									item.destroy();
								}
							});
				}
				$$(containerSelector + ' > :not(' + slideSelector + '):not(.pager)').destroy();
				var container = $$(containerSelector);
				var slides = $$(containerSelector + ' > ' + slideSelector);
				container.store('totalPage', slides.length);
				container.store('currentPage', 1);
				
				
				if($$('#index_slide > .pager').length && $$('#index_slide >  .pager')[0].getChildren().length != slides.length){
					$$('#index_slide > .pager').destroy();
				}

				var pager = new Element('div', {
					'class' : 'pager'
				});
				
				if(!$$('#index_slide > .pager').length){

					for ( var i = 1; i <= slides.length; i++) {
						var aTag = new Element('a');
						aTag.set('text', i);
						if (i == 1) {
							aTag.addClass('current');
						}
						aTag.addEvent('click', function() {
							self.changeSlide(this.get('text'));
							return false;
						});
						pager.grab(aTag);
					}
				}else{
					var pagerChlid = $$('#index_slide >  .pager')[0].getChildren();
					if(pagerChlid.length > 0){
						var i = 1;
						
						pagerChlid.each(function(item){
							if(item.getFirst().tagName != 'A'){
								var aTag = new Element('a');
								aTag.wraps(item.getFirst());
							}else{
								var aTag = item.getFirst();
							}
							if (i == 1) {
								aTag.addClass('current');
								var childEle = item.getFirst().getElement('img');
								
								if($chk(childEle)){
									if(childEle.hasClass('swap')){
										childEle.fireEvent('mouseenter');
										childEle.store('locked', true);
									}
								}
								
							}
								
							aTag.store('index', i);
								
							aTag.addEvent('click', function() {
								self.changeSlide(this.retrieve('index'));
								return false;
							});
							
							pager.grab(aTag);
							i++;
						});
						$$('#index_slide >  .pager').destroy();
					}
				}
				

				container.grab(pager);
				
				container.addEvents({
					'mouseover' : function() {
						this.addClass('mouseover');
					},
					'mouseout' : function() {
						this.removeClass('mouseover');
					}
				});
				$$(
						containerSelector + ' > ' + slideSelector
								+ ':not(:first-child)').addClass('hide');
				container.store('lastSlide', (new Date()).getTime());
				setTimeout(function() {
					self.autoChangeIndexSlide();
				}, 5000);
			},
			autoChangeIndexSlide : function() {
				var self = this;
				var containerSelector = this.containerSelector;
				var container = $$(containerSelector);
				if (container.hasClass('mouseover')[0]
						|| (new Date()).getTime()
								- container.retrieve('lastSlide') < 4900) {
					setTimeout(function() {
						self.autoChangeIndexSlide();
					}, 5000);
					return;
				}
				var totalPage = parseInt(container.retrieve('totalPage'));
				var currentPage = parseInt(container.retrieve('currentPage'));
				var toPage = currentPage < totalPage ? currentPage + 1 : 1;
				self.changeSlide(toPage);
			},
			changeSlide : function(pageNo) {
				var self = this;
				pageNo = parseInt(pageNo);
				var containerSelector = this.containerSelector;
				var slideSelector = this.slideSelector;
				$$(containerSelector).store('currentPage', pageNo);
				var nextSlide = $$(containerSelector + ' > ' + slideSelector
						+ ':nth-child(' + pageNo + ')');
				$$(containerSelector + ' > .pager a').removeClass('current');
				$$(containerSelector + ' > .pager a img').store('locked', false).fireEvent('mouseleave');

				
				$$(containerSelector + ' > .pager a:nth-child(' + pageNo + ')').addClass('current');
				$$(containerSelector + ' > .pager a:nth-child(' + pageNo + ') img').fireEvent('mouseenter').store('locked', true);
				
				self.showSlide(nextSlide);
				setTimeout(function() {
					self.autoChangeIndexSlide();
				}, 5000);
			},
			showSlide : function(item) {
				var containerSelector = this.containerSelector;
				var slideSelector = this.slideSelector;
				var container = $$(containerSelector);
				var slides = $$(containerSelector + ' > ' + slideSelector);
				slides.addClass('hide');
				item.setStyle('opacity', 0).removeClass('hide').fade('in');
				container.store('lastSlide', (new Date()).getTime());
			}
		});
