// Javascript

bannerSS = {
	
	init: function() {
		
		//========= settings=========//
		bannerSS.slids 	 = document.getElementById('bannerslides');
		bannerSS.prevSlide = document.getElementById('prevBanner');
		bannerSS.nextSlide = document.getElementById('nextBanner');
		bannerSS.sdots	 = Core.getElementsByClass('sdots');
		
		bannerSS.slids.initT = 0;
		bannerSS.slids.maxT  = bannerSS.slids.firstChild.width * bannerSS.slids.childNodes.length;
		bannerSS.slids.t 	 = bannerSS.slids.initT;
		
		bannerSS.slids.tArray = new Array();
		
		for(var i = 0, ii = bannerSS.slids.childNodes.length; i<ii; i++) {
			bannerSS.slids.tArray[i] = i * bannerSS.slids.firstChild.width * -1;
		}
		
		for(var m = 0, mm = bannerSS.sdots.length; m<mm; m++) {
			bannerSS.sdots[m]._ref = m;
			Core.addEventListener(bannerSS.sdots[m], "click", bannerSS.moveToListener);
		}
		
		bannerSS.duration  = 1.3;
		bannerSS.frameRate = 100;
		bannerSS.increment = 40;//(bannerSS.slids.maxT - bannerSS.slids.initT) / (bannerSS.frameRate * bannerSS.duration);
		bannerSS.selected  = 0;
		bannerSS.timeRate  = 6500;
		bannerSS.autoplay  = true;
		
		bannerSS.prevSlide.removeAttribute('href');
		bannerSS.nextSlide.removeAttribute('href');
		Core.addEventListener(bannerSS.prevSlide, "click", bannerSS.prevClickListener);
		Core.addEventListener(bannerSS.nextSlide, "click", bannerSS.nextClickListener);
		
		bannerSS.sdots[bannerSS.selected].style.backgroundPosition = 0 + "px " + "-9px";
		
		if(bannerSS.autoplay) {
			bannerSS._playTimer = setInterval(bannerSS.play, bannerSS.timeRate);
		}
	},
	
	prevClickListener: function(event) {
		bannerSS.selected -= 1
		if(bannerSS.selected < 0) {
			bannerSS.selected = 0;
			bannerSS.resetTimer();
			return;
		} else {
			bannerSS.resetTimer();
			bannerSS.clearResetFTimer();
			bannerSS.clearResetRTimer();
			bannerSS.playBackward(bannerSS.selected);
			bannerSS.changeBG();
			bannerSS.sdots[bannerSS.selected].style.backgroundPosition = 0 + "px " + "-9px";
		}
		Core.preventDefault(event);
	},
	
	nextClickListener: function(event) {
		bannerSS.selected += 1
		if(bannerSS.selected >= bannerSS.slids.childNodes.length) {
			bannerSS.resetTimer();
			bannerSS.replay();
			bannerSS.selected = 0;
			bannerSS.changeBG();
			bannerSS.sdots[bannerSS.selected].style.backgroundPosition = 0 + "px " + "-9px";
		} else {
			bannerSS.resetTimer();
			bannerSS.clearResetBTimer();
			bannerSS.clearResetRTimer();
			bannerSS.playForward(bannerSS.selected);
			bannerSS.changeBG();
			bannerSS.sdots[bannerSS.selected].style.backgroundPosition = 0 + "px " + "-9px";
		}
		Core.preventDefault(event);
	},
	
	moveToListener: function(event) {
		if(this._ref != bannerSS.selected) {
			if(this._ref > bannerSS.selected) {
				bannerSS.selected = this._ref;
				bannerSS.resetTimer();
				bannerSS.clearResetBTimer();
				bannerSS.clearResetRTimer();
				bannerSS.playForward(this._ref);
				bannerSS.changeBG();
				bannerSS.sdots[bannerSS.selected].style.backgroundPosition = 0 + "px " + "-9px";
			} else if(this._ref < bannerSS.selected) {
				bannerSS.selected = this._ref;
				bannerSS.resetTimer();
				bannerSS.clearResetFTimer();
				bannerSS.clearResetRTimer();
				bannerSS.playBackward(this._ref);
				bannerSS.changeBG();
				bannerSS.sdots[bannerSS.selected].style.backgroundPosition = 0 + "px " + "-9px";
			}
		}
		Core.preventDefault(event);
	},
	
	playForward: function(ref) {
		bannerSS.slids.t -= bannerSS.increment;
		if(bannerSS.slids.t <= bannerSS.slids.tArray[ref]) {
			bannerSS.slids.t = bannerSS.slids.tArray[ref];
		} else {
			bannerSS._ftimer = setTimeout(function() { bannerSS.playForward(ref) }, 1000/bannerSS.frameRate);
		}
		bannerSS.slids.style.left = bannerSS.slids.t + "px";
	},
	
	playBackward: function(ref) {
		bannerSS.slids.t += bannerSS.increment;
		if(bannerSS.slids.t >= bannerSS.slids.tArray[ref]) {
			bannerSS.slids.t = bannerSS.slids.tArray[ref];
		} else {
			bannerSS._btimer = setTimeout(function() { bannerSS.playBackward(ref) }, 1000/bannerSS.frameRate);
		}
		bannerSS.slids.style.left = bannerSS.slids.t + "px";
	},
	
	replay: function() {
		bannerSS.slids.t += 100;
		if(bannerSS.slids.t >= bannerSS.slids.initT) {
			bannerSS.slids.t = bannerSS.slids.initT;
		} else {
			bannerSS._rtimer = setTimeout(bannerSS.replay, 1000/bannerSS.frameRate);
		}
		bannerSS.slids.style.left = bannerSS.slids.t + "px";
	},
	
	changeBG: function() {
		for(var i = 0, ii = bannerSS.sdots.length; i<ii; i++) {
			bannerSS.sdots[i].style.backgroundPosition = 0 + "px " + 0 + "px";
		}
	},
	
	play : function() {
		bannerSS.selected++;
		if(bannerSS.selected >= bannerSS.slids.childNodes.length) {
			bannerSS.replay();
			bannerSS.selected = 0;
			bannerSS.changeBG();
			bannerSS.sdots[bannerSS.selected].style.backgroundPosition = 0 + "px " + "-9px";
		} else {
			bannerSS.playForward(bannerSS.selected);
			bannerSS.changeBG();
			bannerSS.sdots[bannerSS.selected].style.backgroundPosition = 0 + "px " + "-9px";
		}
	},
	
	clearResetFTimer: function() {
		clearTimeout(bannerSS._ftimer);
		bannerSS._ftimer = null;
	},
	
	clearResetBTimer: function() {
		clearTimeout(bannerSS._btimer);
		bannerSS._btimer = null;
	},
	
	clearResetRTimer: function() {
		clearTimeout(bannerSS._rtimer);
		bannerSS._rtimer = null;
	},
	
	resetTimer: function() {
		clearInterval(bannerSS._playTimer);
		bannerSS._playTimer = null;
		bannerSS._playTimer = setInterval(bannerSS.play, bannerSS.timeRate);
	}
};

Core.start(bannerSS);
