Core.widget.ZoomSlider = function(){
	var Dom = Core.Dom;
	var Builder = Core.Builder;
	var Event = Core.Event;
	
	var slideSpeed = 5000;
	var imgIndex = 0;
	var isPause = false;
	
	var slidePic = null;
	var slideLink = null;
	var slideIntroBar = null;
	var slideItems = null;
	var lastSildeItem = null;
	
	return {
		start: function(slideImg, imgLink, imgIntroBar, imgList){
			slidePic = Dom.get(slideImg);
			slideLink = Dom.get(imgLink);
			slideIntroBar = Dom.get(imgIntroBar);
			slideItems = Dom.get(imgList).getElementsByTagName('li');
			lastSildeItem = slideItems[0];
			this.slide();
			this.change();
		},
		slide: function(){
			var that = this, fadeUp = that.fadeUp, len = slideItems.length, i;
			var slider = function(){
				if (!isPause) {
					var curImgPath = '', curLinkPath = '';
					if (timer) {
						clearTimeout(timer);
					}
					
					imgIndex += 1;
					if (imgIndex > (len - 1)) {
						imgIndex = 0;
					}
					curItem = slideItems[imgIndex];
					curImgPath = curItem.getElementsByTagName('img')[0].src;
					curImgAlt = curItem.getElementsByTagName('img')[0].alt;
					curLinkPath = curItem.getElementsByTagName('a')[0].href;
					
					Dom.setStyle(slidePic, 'opacity', 0);
					Dom.removeClass(lastSildeItem, 'current');
					slidePic.src = curImgPath;
					slideLink.href = curLinkPath;
					slideIntroBar.innerHTML = curImgAlt;
					Dom.addClass(curItem, 'current');
					lastSildeItem = curItem;
					fadeUp.call(that);
					var timer = setTimeout(slider, slideSpeed);
				}
				else {
					var timer = setTimeout(slider, 500);
					return false;
				}
			}
			setTimeout(slider, slideSpeed);
		},
		change: function(){
			var that = this;
			var fadeUp = that.fadeUp;
			var i, len = slideItems.length;
			for (i = 0; i < len; i += 1) {
				Event.addListener(slideItems[i], 'mouseover', function(index){
					return function(){
						Dom.removeClass(lastSildeItem, 'current');
						slidePic.src = this.getElementsByTagName('img')[0].src;
						slideLink.href = this.getElementsByTagName('a')[0].href;
						slideIntroBar.innerHTML = this.getElementsByTagName('img')[0].alt;
						Dom.addClass(this, 'current');
						lastSildeItem = this;
						imgIndex = index;
						isPause = true;
						fadeUp.call(that);
					}
				}(i));
				Event.addListener(slideItems[i], 'mouseout', function(){
					isPause = false;
				});
			}
		},
		fadeUp: function(){
			var level = 0;
			var fade = function(){
				level += 0.05;
				if (level > 1) {
					Dom.setStyle(slidePic, 'opacity', 1);
					return false;
				}
				else {
					Dom.setStyle(slidePic, 'opacity', level);
				}
				setTimeout(fade, 20);
			}
			setTimeout(fade, 20);
		},
		addCSS: function(){
			if (!Dom.get('zoomSilderCSS')) {
				Builder.linkNode('css/zoomsilder.css');
			}
		}
	};
}();	
Core.widget.ZoomSlider.addCSS();
