var INVEN = window.INVEN || {};
INVEN.FloatStatic = window.INVEN.FloatStatic || {};

// ÃÊ±âÈ­
INVEN.FloatStatic.floats = window.INVEN.FloatStatic.floats || new Array();

/**
/* addFloat : ÇÃ·ÎÆÃ Ãß°¡
/* obj : ÇØ´ç ¿ÀºêÁ§Æ® ¶Ç´Â ¿ÀºêÁ§Æ®ÀÇ ID °ª
/* hstatic : °¡·ÎÀ§Ä¡ °íÁ¤ ¿©ºÎ
/* vstatic : ¼¼·ÎÀ§Ä¡ °íÁ¤ ¿©ºÎ
/* hgap : °¡·Î»ó ¿ÞÂÊ ¿©¹é
/* vgap : ¼¼·Î»ó ¿ÞÂÊ ¿©¹é
/* activateDelay : ½ºÅ©·ÑÈÄ ¹ÝÀÀ½Ã°£
/* scrollSpeed : ½ºÅ©·Ñ ¼Óµµ
*/
INVEN.FloatStatic.addFloat = function(obj, hstatic, vstatic, hgap, vgap, activateDelay, scrollSpeed) {
	obj = getObj(obj);
	// ±âº»°ª
	if (hstatic == undefined) hstatic = false;
	if (vstatic == undefined) vstatic = true;
	//if (left == undefined) left = 0;
	//if (top == undefined) top = 0;
	if (hgap == undefined) hgap = 0;
	if (vgap == undefined) vgap = 200;
	if (activateDelay == undefined) activateDelay = 1000;
	if (scrollSpeed == undefined) scrollSpeed = 20;

	// »õ·Î¿î ÇÃ·ÎÆÃ »ý¼º
	INVEN.FloatStatic.floats[obj.id] = new Array();
	INVEN.FloatStatic.floats[obj.id]['hstatic'] = hstatic;
	INVEN.FloatStatic.floats[obj.id]['vstatic'] = vstatic;
	INVEN.FloatStatic.floats[obj.id]['hgap'] = hgap;
	INVEN.FloatStatic.floats[obj.id]['vgap'] = vgap;
	INVEN.FloatStatic.floats[obj.id]['activateDelay'] = activateDelay;
	INVEN.FloatStatic.floats[obj.id]['scrollSpeed'] = scrollSpeed;
	INVEN.FloatStatic.floats[obj.id]['timerFn'] = "";

	// ÃÊ±âÀ§Ä¡ ¼³Á¤
	if (!obj.style.left || !obj.style.top) {
		var coord = INVEN.Coordination.getRelPos(obj);
		var coordParent = INVEN.Coordination.getRelPos(obj.parentNode);
		if (!obj.style.left) obj.style.left = coord.x - coordParent.x;
		if (!obj.style.top) obj.style.top = coord.y - coordParent.y;
	}
	
	// ÇÃ·ÎÆÃ ½ÃÀÛ
	INVEN.FloatStatic.refresh(obj, hstatic, vstatic, hgap, vgap, activateDelay, scrollSpeed);
	addEvent(window,'onscroll',INVEN.FloatStatic.refreshAll);

}

INVEN.FloatStatic.refresh = function(obj, hstatic, vstatic, hgap, vgap, activateDelay, scrollSpeed) {
	obj = getObj(obj);
	var startPointX, endPointX, startPointY, endPointY, refreshTimer, timerFnStr;
	var reached = true;

	scrollLeft = document.compatMode && document.compatMode != "BackCompat" ? document.documentElement.scrollLeft : document.body.scrollLeft;
	scrollTop = document.compatMode && document.compatMode != "BackCompat" ? document.documentElement.scrollTop : document.body.scrollTop;

	startPointX = parseInt(obj.style.left, 10);
	endPointX = hstatic ? scrollLeft + hgap : startPointX;
	startPointY = parseInt(obj.style.top, 10);
	endPointY = vstatic ? scrollTop + vgap : startPointY;

	refreshTimer = activateDelay;
	timerFnStr = "INVEN.FloatStatic.refresh('"+obj.id+"',"+(hstatic ? "true" : "false")+","+(vstatic ? "true" : "false")+","+hgap+","+vgap+","+activateDelay+","+scrollSpeed+");";

	if (startPointX != endPointX) {
		scrollAmount = Math.ceil(Math.abs(endPointX - startPointX) / 15);
		obj.style.left = parseInt(obj.style.left, 10) + ((endPointX < startPointX) ? -scrollAmount : scrollAmount);
		refreshTimer = scrollSpeed;
		reached = false;
	}
	if (startPointY != endPointY) {
		scrollAmount = Math.ceil(Math.abs(endPointY - startPointY) / 15);
		obj.style.top = parseInt(obj.style.top, 10) + ((endPointY < startPointY) ? -scrollAmount : scrollAmount);
		refreshTimer = scrollSpeed;
		reached = false;
	}
	if (reached) {
		INVEN.FloatStatic.floats[obj.id]['timerFn'] = timerFnStr;
		return;
	}

	setTimeout(timerFnStr, refreshTimer);
}

INVEN.FloatStatic.refreshAll = function() {
	for (var key in INVEN.FloatStatic.floats) {
		var temp = INVEN.FloatStatic.floats[key]['timerFn'];
		INVEN.FloatStatic.floats[key]['timerFn'] = "";
		if (temp != "") eval(temp);
	}
}
