var rolling_add2 = function(this_s) {
	// ½Ã°£´ÜÀ§´Â ms·Î 1000ÀÌ 1ÃÊ
	if (this_s.nodeType == 1) {
		this.this_s = this_s;
	} else {
		this.this_s = document.getElementById(this_s);
	}
	this.is_rolling = false;
	this.direction = 1; //1:top, 2:right, 3:bottom, 4:left (½Ã°è¹æÇâ) // 1¹ø°ú 4¹ø¸¸ µÊ
	this.children = null;
	this.move_gap = 1; //¿òÁ÷ÀÌ´Â ÇÈ¼¿´ÜÀ§
	this.time_dealy = 100; //¿òÁ÷ÀÌ´Â Å¸ÀÓµô·¹ÀÌ
	this.time_dealy_pause = 1000; //ÇÏ³ªÀÇ ´ë»óÀÌ »õ·Î ½ÃÀÛÇÒ ¶§ ¸ØÃß´Â ½Ã°£, 0 ÀÌ¸é Àû¿ë ¾ÈÇÔ
	this.time_timer = null;
	this.time_timer_pause = null;
	this.mouseover = false;
	this.init();
	this.set_direction(this.direction);
}
rolling_add2.prototype.init = function() {
	//this.this_s.style.position = 'relative';
	this.this_s.style.overflow = 'hidden';
	var children = this.this_s.childNodes;
	for (var i = (children.length - 1); 0 <= i; i--) {
		if (children[i].nodeType == 1) {
			children[i].style.position = 'relative';
		} else {
			this.this_s.removeChild(children[i]);
		}
	}
	var this_s = this;
	this.this_s.onmouseover = function() {
		this_s.mouseover = true;
		if (!this_s.time_timer_pause) {
			this_s.pause();
		}
	}
	this.this_s.onmouseout = function() {
		this_s.mouseover = false;
		if (!this_s.time_timer_pause) {
			this_s.resume();
		}
	}
}
rolling_add2.prototype.set_direction = function(direction) {
	this.direction = direction;
	if (this.direction == 2 || this.direction == 4) {
		this.this_s.style.whiteSpace = 'nowrap';
	} else {
		this.this_s.style.whiteSpace = 'normal';
	}
	var children = this.this_s.childNodes;
	for (var i = (children.length - 1); 0 <= i; i--) {
		if (this.direction == 1) {
			children[i].style.display = 'block';
		} else if (this.direction == 2) {
			children[i].style.textlign = 'right';
			children[i].style.display = 'inline';
		} else if (this.direction == 3) {
			children[i].style.display = 'block';
		} else if (this.direction == 4) {
			children[i].style.display = 'inline';
		}
	}
	this.init_element_children();
}
rolling_add2.prototype.init_element_children = function() {
	var children = this.this_s.childNodes;
	this.children = children;
	for (var i = (children.length - 1); 0 <= i; i--) {
		if (this.direction == 1) {
			children[i].style.top = '0px';
		} else if (this.direction == 2) {
			children[i].style.left = '-' + this.this_s.firstChild.offsetWidth + 'px';
		} else if (this.direction == 3) {
			children[i].style.top = '-' + this.this_s.firstChild.offsetHeight + 'px';
		} else if (this.direction == 4) {
			children[i].style.left = '0px';
		}
	}
}
rolling_add2.prototype.act_move_up = function() {
	for (var i = 0, m = this.children.length; i < m; i++) {
		var child = this.children[i];
		child.style.top = (parseInt(child.style.top) - this.move_gap) + 'px';
	}
	if ((this.children[0].offsetHeight + parseInt(this.children[0].style.top)) <= 0) {
		this.this_s.appendChild(this.children[0]);
		this.init_element_children();
		this.pause_act();
	}
}
rolling_add2.prototype.move_up = function() {
	if (this.direction != 1 && this.direction != 3) { return false; }
	this.this_s.appendChild(this.children[0]);
	this.init_element_children();
	this.pause_act();
}
rolling_add2.prototype.act_move_down = function() {
	for (var i = 0, m = this.children.length; i < m; i++) {
		var child = this.children[i];
		child.style.top = (parseInt(child.style.top) + this.move_gap) + 'px';
	}
	if (parseInt(this.children[0].style.top) >= 0) {
		this.this_s.insertBefore(this.this_s.lastChild, this.this_s.firstChild);
		this.init_element_children();
		this.pause_act();
	}
}
rolling_add2.prototype.move_down = function() {
	if (this.direction != 1 && this.direction != 3) { return false; }
	this.this_s.insertBefore(this.this_s.lastChild, this.this_s.firstChild);
	this.init_element_children();
	this.pause_act();
}
rolling_add2.prototype.act_move_left = function() {
	for (var i = 0, m = this.children.length; i < m; i++) {
		var child = this.children[i];
		child.style.left = (parseInt(child.style.left) - this.move_gap) + 'px';
	}
	if ((this.children[0].offsetWidth + parseInt(this.children[0].style.left)) <= 0) {
		this.this_s.appendChild(this.this_s.firstChild);
		this.init_element_children();
		this.pause_act();
	}
}
rolling_add2.prototype.move_left = function() {
	if (this.direction != 2 && this.direction != 4) { return false; }
	this.this_s.appendChild(this.this_s.firstChild);
	this.init_element_children();
	this.pause_act();
}
rolling_add2.prototype.act_move_right = function() {
	for (var i = 0, m = this.children.length; i < m; i++) {
		var child = this.children[i];
		child.style.left = (parseInt(child.style.left) + this.move_gap) + 'px';
	}

	if (parseInt(this.this_s.lastChild.style.left) >= 0) {
		this.this_s.insertBefore(this.this_s.lastChild, this.this_s.firstChild);
		this.init_element_children();
		this.pause_act();
	}
}
rolling_add2.prototype.move_right = function() {
	if (this.direction != 2 && this.direction != 4) { return false; }
	this.this_s.insertBefore(this.this_s.lastChild, this.this_s.firstChild);
	this.init_element_children();
	this.pause_act();
}
rolling_add2.prototype.start = function() { //·Ñ¸µ ½ÃÀÛ
	var this_s = this;
	this.stop();
	this.is_rolling = true;
	var act = function() {
		if (this_s.is_rolling) {
			if (this_s.direction == 1) { this_s.act_move_up(); }
			else if (this_s.direction == 2) { this_s.act_move_right(); }
			else if (this_s.direction == 3) { this_s.act_move_down(); }
			else if (this_s.direction == 4) { this_s.act_move_left(); }
		}
	}
	this.time_timer = setInterval(act, this.time_dealy);
}
rolling_add2.prototype.pause_act = function() { //ÀÏ½Ã µ¿ÀÛ
	if (this.time_dealy_pause) {
		var this_s = this;
		var act = function() { this_s.resume(); this_s.time_timer_pause = null; }
		if (this.time_timer_pause) { clearTimeout(this.time_timer_pause); }
		this.time_timer_pause = setTimeout(act, this.time_dealy_pause);
		this.pause();
	}
}
rolling_add2.prototype.pause = function() { //ÀÏ½Ã ¸ØÃã
	this.is_rolling = false;
}
rolling_add2.prototype.resume = function() { //ÀÏ½Ã ¸ØÃã ÇØÁ¦
	if (!this.mouseover) {
		this.is_rolling = true;
	}
}
rolling_add2.prototype.stop = function() { //·Ñ¸µÀ» ³¡³¿
	this.is_rolling = false;
	if (!this.time_timer) {
		clearInterval(this.time_timer);
	}
	this.time_timer = null
}
