(function(){
	var d = document;
	var randArea = null;
	var bnArea = null;
	
	var init = function()
	{		
		randArea = new RandArea ( d.getElementById('topRandamImgArea') );
		randArea.setItem(topRandamImage.contents);
		bnArea = new BnArea ( d.getElementById('topBannerSlideShow'), d.getElementById('topBannerSlideControl') );
		bnArea.setItem(top_banner_data.contents);
	}

	//class
	//=====
	
	//RandArea
	function RandArea(div)
	{
		this.frame = div;
		this.now = 0;
		this.mTimer = null;
		this.moving = false;
		this.imgList = [];
		
	}
		//setItem
		RandArea.prototype.setItem = function(data)
		{
			if(data.length<1)return;
			
			var ul = d.createElement('ul');			
			for(var i=0; i<data.length; i++)
			{
				var li = d.createElement('li');				
					var img =d.createElement('img');
					img.alt = data[i].imgAlt;
					img.src = data[i].imgPath;
					li.appendChild(img);
				ul.appendChild(li);
				this.imgList.push(li);
			}	
			this.frame.appendChild(ul);
			if(this.imgList.length==1){
				this.imgList[0].style.display = 'block';
				return;
			}
			
			var r = Math.floor(Math.random()*this.imgList.length);
			this.imgList[r].style.display = 'block';
			this.now = r;
			
			var p = this;
			addEvent(this.frame, 'click', function(){p.imgChange();});
			//p.setTimer();
		}
		//imgChange
		RandArea.prototype.imgChange = function()
		{
			if(this.moving)return;
			this.moving = true;			
			var sv = this.now;
			var now = this.now = this.now+1 == this.imgList.length ? 0 : this.now+1;
			var p = this;
			
			//p.setTimer();
			kmsEffect.Opacity(p.imgList[now], 0);
			p.imgList[now].style.display = 'block';
			p.imgList[now].style.zIndex = '1';
			kmsEffect.OpacityAnimation(
				p.imgList[now],
				0,
				100,
				0.4,
				function()
				{
					p.imgList[sv].style.display = 'none';
					p.imgList[now].style.zIndex = '0';
					p.moving = false;					
				}
			);
		}
		//setTimer
		RandArea.prototype.setTimer = function()
		{
			var p = this;
			clearInterval(p.mTimer);
			p.mTimer = setInterval(
				function(){
					p.imgChange();
				},
				5500
			);
		}
	
	//BnBtn
	function BnArea(div, ul)
	{
		this.box = div;
		this.moveBox = null;
		this.bnList = [];
		this.control = ul;
		this.prev = ul.getElementsByTagName('li')[0];
		this.next = ul.getElementsByTagName('li')[1];
		
		this.moveNow = 0;
		this.moveMax = 0;
	}
		//setItem
		BnArea.prototype.setItem = function(data)
		{
			if(data.length<1)return;
			
			var ul = d.createElement('ul');			
			for(var i=0; i<data.length; i++)
			{
				var li = d.createElement('li');	
					var a = d.createElement('a');
					a.href = data[i].linkUrl;
					if(data[i].blank)a.target = 'blank'; 
						var img =d.createElement('img');
						img.alt = data[i].imgAlt;
						img.src = data[i].imgPath;
						//img.className = 'btn';
						a.appendChild(img);
					li.appendChild(a);
				ul.appendChild(li);
				this.bnList.push(li);
			}	
			this.box.appendChild(ul);
			this.moveBox = ul;
			if(this.bnList.length<4){
				return;
			}

			this.control.style.display = 'block';
			this.moveMax = parseInt((this.bnList.length -1)/ 3);
			kmsEffect.Pixel(this.moveBox, 'marginLeft', 0);
			this.setBtnClass(0);			
			var p = this;
			var prevLink = this.prev.getElementsByTagName('a')[0];
			var nextLink = this.next.getElementsByTagName('a')[0];
			addEvent(prevLink, 'click', function(){p.setMove(-1); prevLink.blur();});
			addEvent(nextLink, 'click', function(){p.setMove( 1); nextLink.blur();});
		}
		//setMove
		BnArea.prototype.setMove = function(dir)
		{
			if(this.moveNow+dir < 0 || this.moveNow+dir > this.moveMax){return;}			
			this.moveNow+=dir;
			this.setBtnClass();			
			
			var p = this;			
			kmsEffect.PixelAnimation(
				p.moveBox,
				'marginLeft',
				kmsEffect.GetPixel(p.moveBox, 'marginLeft'),
				-864*this.moveNow,
				0.4,
				'easeOutCubic',
				function(){}
			);
		}
		//setBtnClass
		BnArea.prototype.setBtnClass = function()
		{
			if(this.moveNow == 0){this.prev.className += ' Of';}
			else{this.prev.className = this.prev.className.replace(' Of', '');}
			if(this.moveNow == this.moveMax){this.next.className +=' Of';}
			else{this.next.className = this.next.className.replace(' Of', '');}
		}
	
	//addEvent
	function addEvent(elem, listener, func)
	{
		var ret = func;
		if(elem.addEventListener){elem.addEventListener(listener, func, false);}
		else if(elem.attachEvent){elem.attachEvent("on" + listener, ret);}
		return ret;
	}
	
	//DOMContentLoaded
	(function(){
		if(navigator.userAgent.match(/MSIE/)){
		 try {
			 d.createComment().doScroll();
			 init();
		 } catch(e){ setTimeout(arguments.callee, 1);}
		} else {
		 d.addEventListener("DOMContentLoaded", init, false);
		}
	})();			
})();
