
//********************************************************//
//	인터페이스 데코레이션 관련 함수
//  작성자 : 정병태
//  작성일 : 2007-01-27
//
//  browserInfo.js 필요 
//
//********************************************************//


//********************************************************************************************//
// 오버레이 화면 구현
//********************************************************************************************//
function initOverlay() {	

	var objBody = document.getElementsByTagName("body").item(0);

	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '90';
	objOverlay.style.width = '100%';
	objBody.insertBefore(objOverlay, objBody.firstChild);
}

//
function showOverlay(color,opacity) {

	var objBody = document.getElementsByTagName("body").item(0);
	var objOverlay = document.getElementById('overlay');
	var arrayPageSize = getPageSize();
	
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.backgroundColor = color;
	objOverlay.style.opacity = "."+opacity;
	objOverlay.style.filter = "Alpha(opacity="+opacity+")";
	objOverlay.style.display = "block";
}

function hideOverlay() {
	var objOverlay = document.getElementById('overlay');
	objOverlay.style.display = "none";
}

function showWithOverlay(name,color,opacity) {

	var obj = document.getElementById(name);
	var objOverlay = document.getElementById('overlay');

	showOverlay(color,opacity);
	obj.style.zIndex = objOverlay.style.zIndex+1;
	obj.style.display = "block";
}

function showWithOverlay(name) {

	var obj = document.getElementById(name);
	var objOverlay = document.getElementById('overlay');

	showOverlay("#000000","70");
	obj.style.zIndex = objOverlay.style.zIndex+1;
	obj.style.display = "block";
}

function hideWithOverlay(name) {
	var obj = document.getElementById(name);
	obj.style.display = "none";
	hideOverlay();
}

function positionCenter(name,width,height) {

	var obj = document.getElementById(name);

	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	obj.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - height) / 2) + 'px');
	obj.style.left = (((arrayPageSize[0] - 20 - width) / 2) + 'px');
}


//********************************************************************************************//
// XML 데이터 그리드
//********************************************************************************************//

var tmpGridHtml = new Array();
var objItem;

function initGrid(grid) {
	objItem = document.getElementById(grid);
	tmpGridHtml[grid] = objItem.innerHTML;
	objItem.innerHTML = "";
}

function showGrid(grid, rows) {

	objItem = document.getElementById(grid);
	objItem.innerHTML = "";

	for(i = 0; i < pageSize; i++) {
		var tmpObj = document.createElement("div");
		//tmpObj.style.styleFloat = objItem.style.styleFloat;
		//tmpObj.className = objItem.className;  //클래스 호출 
		tmpObj.innerHTML = tmpGridHtml[grid];
		rowitem = rows[i];
		if(rowitem) {
			var cells = tmpObj.getElementsByTagName("div");		
			var tmpid = rowitem.getElementsByTagName("idx").item(0).firstChild.nodeValue;
			tmpObj.id = "row_"+tmpid;
			var tmptitle2 = "";
			var html = "";
				
			for(x = 0; x <cells.length; x++) {
				if(cells.item(x).id) {
					if(cells.item(x).id == "delcheck") { 
						cells.item(x).innerHTML = "<input type=checkbox name=idx value=" + tmpid + ">";
					}
					
					if(rowitem.getElementsByTagName(cells.item(x).id).item(0)) {
						if(cells.item(x).id == "title") { 
							var tmptitle = rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue;
							cells.item(x).innerHTML = "<a href=\"javascript:actionTrigger('getContent("+tmpid+")')\">"+tmptitle+"</a>" + " " + rowitem.getElementsByTagName("isnew").item(0).firstChild.nodeValue;
							cells.item(x).id = tmpid;
							tmptitle2 = cells.item(x).innerHTML;	
											
						}else if(cells.item(x).id == "isuse") { 
							html = "<select name='isuse' style='width:60' onChange='modifyIsuse(this," + tmpid + ");'>\n";
							if(rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue == "Y"){
								html = html + "<option value='Y' selected>Y</option>";
								html = html + "<option value='N'>N</option>";
							}else{
								html = html + "<option value='Y'>Y</option>\n";
								html = html + "<option value='N' selected>N</option>";
							}
							html = html + "</select>";
							cells.item(x).innerHTML = html;
							
						}else{
							cells.item(x).innerHTML = rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue;
						}
					}
				}
			}
			objItem.appendChild(tmpObj);	
		}
		//alert(objItem.innerHTML);
		//dndMgr.registerDraggable( new CustomDraggable(tmpid, tmptitle2));
	}
	
}

//위로
function addFirstGrid(grid, rowitem) {

	var tmpObj = document.createElement("div");
	tmpObj.innerHTML = tmpGridHtml[grid];

	var cells = tmpObj.getElementsByTagName("div");
	var tmpid = rowitem.getElementsByTagName("idx").item(0).firstChild.nodeValue;
	tmpObj.id = "row_"+tmpid;
	var tmptitle2 = "";
	var html = "";
	
	for(x = 0; x <cells.length; x++) {		
		if(cells.item(x).id) {
			if(cells.item(x).id == "delcheck") { 
				cells.item(x).innerHTML = "<input type=checkbox name=idx value=" + tmpid + ">";
			}
			if(rowitem.getElementsByTagName(cells.item(x).id).item(0)) {
				if(cells.item(x).id == "title") { 
					var tmptitle = rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue;
					cells.item(x).innerHTML = "<a href=\"javascript:actionTrigger('getContent("+tmpid+")')\">"+tmptitle+"</a>" + " " + rowitem.getElementsByTagName("isnew").item(0).firstChild.nodeValue;
					cells.item(x).id = tmpid;
					tmptitle2 = cells.item(x).innerHTML;	
				}else if(cells.item(x).id == "isuse") { 
					html = "<select name='isuse' style='width:60' onChange='modifyIsuse(this," + tmpid + ");'>\n";
					if(rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue == "Y"){
						html = html + "<option value='Y' selected>Y</option>";
						html = html + "<option value='N'>N</option>";
					}else{
						html = html + "<option value='Y'>Y</option>\n";
						html = html + "<option value='N' selected>N</option>";
					}
					html = html + "</select>";
					cells.item(x).innerHTML = html;
				} else if(cells.item(x).id == "num"){
						cells.item(x).innerHTML = startCurrentNum;
				} else {
					cells.item(x).innerHTML = rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue;
				}
			}
		}
	}

	objItem.removeChild(objItem.lastChild);
	objItem.insertBefore(tmpObj,  objItem.firstChild);
	//dndMgr.registerDraggable( new CustomDraggable(tmpid, tmptitle2));
}

//아래로
function addNextGrid(grid, rowitem) {

	var tmpObj = document.createElement("div");
	tmpObj.innerHTML = tmpGridHtml[grid];

	if(rowitem) {
		var cells = tmpObj.getElementsByTagName("div");
		var tmpid = rowitem.getElementsByTagName("idx").item(0).firstChild.nodeValue;

		tmpObj.id = "row_"+tmpid;
		var tmptitle2 = "";
		var html = "";
		for(x = 0; x <cells.length; x++) {
			if(cells.item(x).id) {
				if(cells.item(x).id == "delcheck") { 
					cells.item(x).innerHTML = "<input type=checkbox name=idx value=" + tmpid + ">";
				}
				if(rowitem.getElementsByTagName(cells.item(x).id).item(0)) {
					if(cells.item(x).id == "title") { 
						var tmptitle = rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue;
						cells.item(x).innerHTML = "<a href=\"javascript:actionTrigger('getContent("+tmpid+")')\">"+tmptitle+"</a>" + " " + rowitem.getElementsByTagName("isnew").item(0).firstChild.nodeValue;
						cells.item(x).id = tmpid;
						tmptitle2 = cells.item(x).innerHTML;	
					}else if(cells.item(x).id == "isuse") { 
						html = "<select name='isuse' style='width:60' onChange='modifyIsuse(this," + tmpid + ");'>\n";
						if(rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue == "Y"){
							html = html + "<option value='Y' selected>Y</option>";
							html = html + "<option value='N'>N</option>";
						}else{
							html = html + "<option value='Y'>Y</option>\n";
							html = html + "<option value='N' selected>N</option>";
						}
						html = html + "</select>";
						cells.item(x).innerHTML = html;
					} else if(cells.item(x).id == "num"){
						cells.item(x).innerHTML = nextCurrentNum;
					} else {
						cells.item(x).innerHTML = rowitem.getElementsByTagName(cells.item(x).id).item(0).firstChild.nodeValue;
					}
				}
			}
		}
	}

	objItem.removeChild(objItem.firstChild);
	objItem.appendChild(tmpObj);	
	//dndMgr.registerDraggable( new CustomDraggable(tmpid, tmptitle2));
}


// DIV 자연스럽게 위치/크기 조절
function Resize(obj) {

		return {

			smoothly : function(x, y, w, h, func, flag) // flag : /* 0:점점느리게 / 1:점점빠르게 */
			{

				obj.style.display = "block";
				obj.style.overflow = "hidden";

				if (!(isNaN(x) && isNaN(y) && isNaN(w) && isNaN(h)))
				{
					var coord = Position.cumulativeOffset(obj);

					obj._tmp_h = h;
					obj._tmp_w = w;

					if(h <= 0 && !isNaN(h)) h = 1;
					if(w <= 0 && !isNaN(w)) w = 1;

					obj._spstn = [coord[0], coord[1]];
					obj._ssize = [obj.offsetWidth, obj.offsetHeight];
					obj._dpstn = [x, y];
					obj._dsize = [w, h];

					obj._func = func;
					obj._flag = flag;

					obj._percent = obj._flag ? 0 : 0.05;
				}

				var speed = 0.3; // 0.3

				if (obj._flag)	obj._percent = (1 - obj._percent) * speed + obj._percent;
				else			obj._percent += obj._percent * speed;

				if (obj._percent > 1) obj._percent = 1;

				//var opacity = (obj._flag ? parseInt(obj._percent * 100) : 100 - parseInt(obj._percent * 100));
				//obj.style.filter = "alpha(opacity=" + opacity + ")";
				//obj.style.opacity = opacity / 100;

				var x = (obj._dpstn[0] - obj._spstn[0]) * obj._percent + obj._spstn[0];
				var y = (obj._dpstn[1] - obj._spstn[1]) * obj._percent + obj._spstn[1];

				var w = (obj._dsize[0] - obj._ssize[0]) * obj._percent + obj._ssize[0];
				var h = (obj._dsize[1] - obj._ssize[1]) * obj._percent + obj._ssize[1];

				var completed = false;

				var done_rate = 0;
				var valid_num = 0;

				if (!isNaN(obj._dpstn[0])) { done_rate += Math.abs(obj._dpstn[0] - x); valid_num++; }
				if (!isNaN(obj._dpstn[1])) { done_rate += Math.abs(obj._dpstn[1] - y); valid_num++; }
				if (!isNaN(obj._dsize[0])) { done_rate += Math.abs(obj._dsize[0] - w); valid_num++; }
				if (!isNaN(obj._dsize[1])) { done_rate += Math.abs(obj._dsize[1] - h); valid_num++; }

				if ((done_rate / valid_num <= 2) || obj._percent >= 1) // 목적 위치에 충분히 접근했으면
				{
					x = obj._dpstn[0];
					y = obj._dpstn[1];

					w = obj._dsize[0];
					h = obj._dsize[1];

					completed = true;
				}
				else
				{
					if (!(obj._ms_timer)) // 타이머가 없으면 생성
						obj._ms_timer = setInterval(function() { Resize(obj).smoothly(); }, 15);
				}

				if (!isNaN(x)) obj.style.left = x + "px";
				if (!isNaN(y)) obj.style.top = y + "px";

				if (!isNaN(w) && w >= 0) obj.style.width = w + "px";
				if (!isNaN(h) && h >= h) obj.style.height = h + "px";

				if (completed) Resize(obj).stop();
			},

			stop : function()
			{

				if(obj._tmp_h == 0 || obj._tmp_w == 0) obj.style.display = "none"; 
				if(obj._tmp_h != 0 && obj._tmp_w != 0) obj.style.overflow = "visible";

				if (obj._ms_timer) // 타이머가 있으면 파괴
					clearInterval(obj._ms_timer);

				obj._ms_timer = null;

				obj._dpstn[0] = null;
				obj._dpstn[1] = null;
				obj._dsize[0] = null;
				obj._dsize[1] = null;

				if (obj._func) obj._func();

				obj._func = null;
			}
		};
	}

