/**
	@ÆÄ ÀÏ ¸í : scrollContro.js
	@ÀÛ¼ºÀÏ½Ã : 2009/04/20
	@¼ö Á¤ ÀÚ : ÀÌ°­¿ø
	@¼³    ¸í : ÀÎ±â°Ë»ö¾î Rolling Javascript (Cross-Browsing)
*/

/* »ç¿ë¹ý Start*/
//	var scroll	= new ScrollControl('html element id',options);
//
//	options Ç×¸ñ
//	inteval : Àç±ÍÈ£Ãâ ½Ã°£ °£°Ý 1/1000ÃÊ(±âº»°ª 50)
//	freeze : Àá½Ã ¸ØÃç ÀÖ´Â ½Ã°£ °£°Ý 1/1000 ÃÊ(±âº»°ª 1000)
//	height : °´Ã¼ ³ôÀÌ(±âº»°ª 20)
//	cMarginTop : ÀÚµ¿À¸·Î ±¸ÇØÁÖ³ª, ±ÛÀÚ Å©±â¿Í °´Ã¼ ³ôÀÌ µîÀ¸·Î ÀÎÇØ, ÀÇµµÇÑ ³ôÀÌ°¡ ³ª¿ÀÁö ¾ÊÀ» ¼ö ÀÖ±â ¶§¹®¿¡ »ç¿ëÀÚ°¡ °­Á¦ ÀÔ·ÂÇÔ.
//	
/* »ç¿ë¹ý End */

var ScrollControl	= function(objId,options){
	this.init(objId,options);
}
ScrollControl.prototype	= {
	stage : {},
	options : {},
	isover : false,
	freeze : false,
	course : 'top',

	init : function(objId,options){
		this.setOptions(options);
		this.setStage(objId);
		this.setTrueData();

		this.move();
	},
	setOptions : function(options){
		options.inteval	= options.inteval	|| 50;
		options.freeze	= options.freeze	|| 2000; //1000
		options.height	= parseInt(options.height, 10)	|| 20;

		options.cMarginTop	= options.cMarginTop	|| (options.height/2) * 0; //(options.height/2) * 0.3
		options.cHeight		= options.height - options.cMarginTop;

		this.options	= options;
	},
	setTrueData : function(){
		var cObjs		= this.stage.childNodes;
		var removes		= [];

		for(var i=0;i<cObjs.length;i++){
			if(!cObjs[i].tagName){
				removes.push(cObjs[i]);	//¹Ù·Î »èÁ¦ ½Ã µ¥ÀÌÅÍ ²¿ÀÌ´Âµí ÇÏ¿© ÀÏ´Ü ÅµÇÔ.
			}else{
				cObjs[i].style.margin		= "0";

				cObjs[i].style.marginTop	= this.options.cMarginTop;
				cObjs[i].style.height		= this.options.cHeight;
			}
		}

		// Ã£Àº µ¥ÀÌÅÍ¸¦ »èÁ¦ÇÔ.(FFÀÇ °æ¿ì text ³ëµå°¡ Ã·ºÎµÊ.)
		for(var i=0;i<removes.length;i++){
			this.stage.removeChild(removes[i]);
		}

		if(cObjs.length == 1){
			this.stage.appendChild( cObjs[0].cloneNode(true) );
		}

	},
	setStage : function(objId){
		var This	= this;
		this.stage		= document.getElementById(objId);

		this.stage.style.height		= this.options.height;
		this.stage.style.overflow	= "hidden";
		this.stage.style.padding	= "0px 0px 1px 0px";
		this.stage.style.margin		= "0px";

		this.stage.onmouseover=function(){This.isover=true;} 
		this.stage.onmouseout=function(){This.isover=false;} 
	},
	setCourse : function(course){
		if(this.course != 'down' && course == 'down'){
			this.changeChild();
			this.stage.scrollTop = this.options.height;
		}else if(course == 'top' && this.stage.scrollTop >= this.options.height){
			this.stage.appendChild(this.stage.childNodes[0]);
			this.stage.scrollTop = this.stage.scrollTop - this.options.height;
		}

		this.course	= course;
	},
	changeChild : function(){
		var childCnt	= this.stage.childNodes.length;

		for(var i=0; i<childCnt-1;i++ ){
			this.stage.appendChild( this.stage.childNodes[0] );	// Ç×»ó Ã¹¹øÂ°°ÍÀ» µÚ·Î ÀÌµ¿
		}
	},
	actionTop : function(){
		this.stage.scrollTop++;
		if( this.stage.scrollTop >= this.options.height ){
			this.stage.appendChild(this.stage.childNodes[0]);
			this.stage.scrollTop = this.stage.scrollTop - this.options.height;
			this.freeze			= true;
		}
	},
	actionDown : function(){
		this.stage.scrollTop--;
		if( this.stage.scrollTop == 0 ){
			this.changeChild();
			this.stage.scrollTop = this.options.height;
			this.freeze			= true;
			
			this.setCourse("top");
		}
	},
	move : function(){
		if(!this.isover){
			if(this.course == 'top')	this.actionTop();
			else						this.actionDown();
		}

		var This	= this;
		if(this.freeze)	window.setTimeout(function(){This.move()}, this.options.freeze); 
		else			window.setTimeout(function(){This.move()}, this.options.inteval); 
		this.freeze	= false;
	}

}
