document.write("<script src='/js/jquery-1.3.2.js'></script>");
document.write("<script src='/js/ui/jquery-ui-1.7.1.custom.js'></script>");
document.write("<script src='/js/jquery.validate.js'></script>");
document.write("<script src='/js/ui/i18n/ui.datepicker-ko.js'></script>");
document.write("<script src='/js/jquery.form.js'></script>");
document.write("<script src='/js/jquery.MultiFile.js'></script>");
document.write("<script src='/js/progressbar.js'></script>");
document.write("<script src='/js/ubs-js.js'></script>");
document.write("<script src='/js/download.jQuery.js'></script>");

// LeeSJ - 추가
function doLogout() {
	goUrl("/login/logout.ubs");
	return;
}

// Left 메뉴 영역 열고 닫기
function openLeftView(flag){
	var openLayer = document.getElementById("openedLeft");//$("#openedLeft");
	var closeLayer = document.getElementById("closedLeft");//$("#closedLeft");

	if(openLayer != null && closeLayer != null) {
		openLayer.style.display = flag ? "block" : "none";
		closeLayer.style.display = flag ? "none" : "block";
	}
}

function getCookie(name) { 

	var nameOfCookie = name + '='; 
	var x = 0; 
	while(x <= document.cookie.length) 
	{ 
		var y = (x + nameOfCookie.length); 
		if(document.cookie.substring(x,y) == nameOfCookie) 
		{ 
			if((endOfCookie = document.cookie.indexOf(';',y)) == -1) 
			endOfCookie = document.cookie.length; 
			return unescape(document.cookie.substring(y,endOfCookie)); 
		} 
		x = document.cookie.indexOf(' ',x) + 1; 
		if(x == 0) 
			break; 
	} 
	return ''; 
}

function setCookie(name, value, expiredays) { //쿠키를 사용자에게 전달할 함수만들기 
	//setCookie(쿠키이름,쿠키값,쿠키만료시간) 
	var todayDate = new Date(); 
	todayDate.setDate(todayDate.getDate() + expiredays); 
	document.cookie = name + "=" + escape(value) + "; path=/; expires=" + todayDate.toGMTString() + ";" 
} 

function hidePopup(idx) {
	
	setCookie("no_pop" + idx, "ok", 1);
	$("#popup_div_" +idx).hide();
}

var libFunc = {
	/**
	 * 메뉴롤오버 관련 처리
	 * @param {Object} oObj - 대상 Element
	 * @param {Boolean} bOver - 마우스 오버 여부
	 * @param {String} sValue - 오버 스타일 값
	 */
	rollMenu : function(oObj, bOver, sValue){
		var onClass = sValue + "-on";
		var overClass = sValue + "-over";

		if(this.hasClass(onClass, oObj)) return;

		if(bOver) this.addClass(overClass, oObj);
		else this.removeClass(overClass, oObj);
	},
	
	addClass:function(sClass, oObj){
		if(sClass instanceof Array){
			for(var i=0,len=sClass.length;i<len;i++){
				this.addClass(sClass[i]);
			}
		}else{
			if(sClass&&!this.hasClass(sClass, oObj)){
				oObj.className = oObj.className+" "+sClass;
			}
		}
		return;
	},

	hasClass:function(sClass, oObj){
		return sClass&&(" "+ oObj.className + " ").indexOf(" " + sClass + " ")!=-1;
	},

	removeClass:function(sClass, oObj){
		if(!sClass||!oObj.className){
			return;
		}
		if(sClass instanceof Array){
			for(var i=0,len=sClass.length;i<len;i++){
				this.removeClass(sClass[i]);
			}
		}else{
			if(this.hasClass(sClass, oObj)){
				var re=this.classReCache[sClass];
				if(!re){
					re=new RegExp("(?:^|\\s+)"+sClass+"(?:\\s+|$)","g");
					this.classReCache[sClass]=re;
				}
				oObj.className=oObj.className.replace(re," ");
			}
		}
		return;
	},

	classReCache:{}
	
};

function goUrl(url) {
	location.href = url;
}

function Grid(pData) {
	this.data = pData;

	this.init = function() {

		var renderTo = document.getElementById(this.data.renderTo);
		renderTo.innerHTML = '';

		var gridHeader = document.createElement("table");
		gridHeader.className = "f-grid3-header";
		gridHeader.id = this.data.id;
		//gridHeader.border = 1;	// LeeSJ
		gridHeader.width = this.data.width;
		gridHeader.cellPadding = "0";
		gridHeader.cellSpacing = "0";
		
		var tr = gridHeader.insertRow(0);
		tr.className = "f-grid3-hd-row";

		var td;
		for(var i = 0 ; i < this.data.colModel.length; i++) {
			td = tr.insertCell(i);
			td.innerHTML = this.data.colModel[i].header;
			if(this.data.colModel[i].width != null)
				td.style.width = this.data.colModel[i].width;
			//td.className = "ui-widget-header";
		}
		
		// 마지막 셀 - 09.07.03 LeeSJ
		td = tr.insertCell(this.data.colModel.length);
		td.style.width = 11;
		td.className = "f-grid3-hd-row-last";
		//
		
		renderTo.appendChild(gridHeader);
		
		// List Body 구성 - 09.07.03 LeeSJ
		var _gridBodyDiv = document.createElement("div");
		_gridBodyDiv.id = this.data.id + "-body";
		_gridBodyDiv.className="rendResizeGrid";
		_gridBodyDiv.style.width = "100%";
		_gridBodyDiv.style.height = 50;
		//_gridBodyDiv.style.overflow = "auto";
		//_gridBodyDiv.style.border = "1px solid #FF8000"
		
		this.gridBodyDiv = _gridBodyDiv;
		
		renderTo.appendChild(this.gridBodyDiv);
	}
	
	this.setBodyHeight = function(value){
		if(!isNaN(value)) return;
		this.gridBodyDiv.style.height = value;
	}

	this.load = function(grid, params) {
		
		$.ajax({
			type: "POST",
			url: this.data.action,
			data : params ,
			dataType : "json",    
			success: function(result) {
				var isError = result.isError;
				
				if(isError == "true") {
	
					alert("!Data Loading중 오류가 발생하였습니다.\n\n" + result.exception);
					
				} else {
	
					grid.renderTable(result.list);
					
				}
			}
	    });
	}
	
	this.getGridBody = function(){
		return this.gridBodyDiv.children[0];
	}

	this.renderTable = function(list) {

		var gridBody = this.getGridBody();
		//var tbl = document.getElementById(this.data.id);

		//테이블 데이터 리셋 - 출력된 내용이 있으면 삭제
		if(gridBody) this.gridBodyDiv.removeChild(gridBody);
		//for( var i = tbl.rows.length-1; i > 0; i-- ) {
		//	tbl.deleteRow(i);
		//}
		
		// LeeSJ - 09.07.03
		var _gridBody = document.createElement("table");
		_gridBody.style.width = "100%";
		_gridBody.className = "f-grid3-body";
		_gridBody.cellPadding = "0";
		_gridBody.cellSpacing = "0";
		//
		
		var tr;
		if(list.length == 0) {
			tr = _gridBody.insertRow(0);			// LeeSJ - 09.07.03
			var td = tr.insertCell(0);				// LeeSJ - 09.07.03
			//td.colSpan = "10";
			td.style.textAlign = "center";
			td.style.verticalAlign = "middle";		// LeeSJ - 09.07.03
			td.innerHTML = "Data가 없습니다.";
			
			_gridBody.style.height = "100%";			// LeeSJ - 09.07.03
			this.gridBodyDiv.appendChild(_gridBody);	// LeeSJ - 09.07.03
			
			return;
		}
		
		var td;

		for(var i = 0; i < list.length; i++) {
			tr = _gridBody.insertRow(i);
			tr.className = i%2 == 0 ? "f-grid3-row" : "f-grid3-row-alt";	// LeeSJ - 09.07.03
			
			for(var j = 0 ; j < this.data.colModel.length; j++) {
				td = tr.insertCell(j);
				td.id = this.data.colModel[j].property;
				if(this.data.colModel[j].width != null)
					td.style.width = this.data.colModel[j].width;

				var value = eval("list[" + i + "]." + this.data.colModel[j].property);
				var renderer = this.data.colModel[j].renderer;
				var align = this.data.colModel[j].align;

				if(renderer == null) {
				
					// 추가/변경 - 문자열이 셀을 넘칠경우 ... 표기
					var innerDiv = document.createElement("div");
					innerDiv.className = "f-grid3-cell-inner";
					
					if(value == null || value == "") value = "&nbsp;";
					innerDiv.innerHTML = value;
					
					td.appendChild(innerDiv);
					// 
				
					//if(value == null || value == "") value = "&nbsp;";
					//td.innerHTML = value;
				} else {
					if(eval(value) != null) {
						var rendererValue = renderer + "(" + eval(value) + ")";
						td.innerHTML = eval(rendererValue);
					} else
						var rendererValue = renderer + "(" + (i)+ ", list[" + i + "])";
						td.innerHTML = eval(rendererValue);
				}

				if(align == null)
					td.align = "left";
				else 
					td.align = align;
			}
			
			// 마지막 셀 - 09.07.03 LeeSJ
			td = tr.insertCell(this.data.colModel.length);
			td.style.width = 10;
			td.className = "f-grid3-row-last";
			td.innerHTML = "&nbsp;";
			//
		}
		
		this.gridBodyDiv.appendChild(_gridBody);
	}
}

/***************************************************************
* 문자열 관련 개체
***************************************************************/
var strUtil = {
	
	/*
	* 입력된 값(숫자)의 3자리마다 ,를 찍어서 반환
	* arg		: arguments Number String
	*/
	krMoney : function(arg){
	
		if(arg == null) return "";
		
		var isMinus = false;
		var num = String(arg);
		//소수점 파싱 시작
		var oPrime = num.split(".")[0];
		var prime = num.split(".")[1];
		//파싱 끝
		num = "";
		
		//사용자가 임의로 넣은 콤마(,)제거
		while(oPrime.indexOf(",")!=-1){
			oPrime = oPrime.replace(",","");
		}
		//제거 끝

		// 소수점 이상 부분 변환
		if(Number(oPrime) == 0) oPrime = "0";
		// 음수일 경우
		if(Number(oPrime) < 0){
			isMinus = true;
			oPrime = oPrime.replace("-","");
		}

		var decimal = oPrime.length % 3;
		for(i=0;i<oPrime.length;i++){
			if(i%3 == decimal){
				num += ",";
			}
			num += oPrime.charAt(i);
		}

		if(!decimal){
			num = num.replace(num.charAt(0),"");
		}
		//변환 끝

		//"소수점 이하가 있다면"조건부 시작
		if(prime){
			num += "." + prime;
		}
		//조건부 끝

		// 음수일경우
		if(isMinus) num = "-" + num;

		return num;
	}
}

/***************************************************************
* 팝업 관련 개체
***************************************************************/
var Popup = {
	open : function(pData) {

		var page = pData.url;
		var title = pData.title;
		var width = pData.width;
		var height = pData.height;
		var scroll = pData.scroll;
		var params = (pData.params == null)? {} : pData.params;
		
		if(params != "")
			page += '?' + jQuery.param(params);
		
		var winl = (screen.width - width) / 2; 
		var wint = (screen.height - height) / 2; 
		winprops = 'height='+height+',width='+width+',top='+wint+',left='+winl+',scrollbars='+scroll+'';
		win = window.open(page, title, winprops);
		if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); } 
		
	}
}

/***************************************************************
* Ajax 관련 개체
***************************************************************/
var Ajax = {
	send : function(url, params, callback, obj) {
		$.ajax({
			type: "POST",
			url: url,
			data : params ,
			dataType : "json",    
			success: function(data) {
				var isError = data.isError;

				if(isError == "true") {
					alert("요청하신 작업중 오류가 발생하였습니다.\n\n" + data.exception);
					return;
				} else {
					callback(data, obj);
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				if(textStatus == "parsererror") {
					alert("응답 형식이 JSON이 아닙니다.");
				}
			}
	    });
			
	}
	,
	getHtml : function(url, params, callback, obj) {
		$.ajax({
			type: "POST",
			url: url,
			data : params ,
			dataType : "html",    
			success: function(data) {
				var isError = data.isError;
	
				if(isError == "true") {
					alert("요청하신 작업중 오류가 발생하였습니다.\n\n" + data.exception);
					return;
				} else {
					callback(data, obj);
				}
			}
	    });
	}
	,
	getXml : function(url, params, callback, obj) {
		$.ajax({
			type: "POST",
			url: url,
			data : params ,
			dataType : "xml",    
			success: function(data) {
				var isError = data.isError;
	
				if(isError == "true") {
					alert("요청하신 작업중 오류가 발생하였습니다.\n\n" + data.exception);
					return;
				} else {
					callback(data, obj);
				}
			}
	    });
	}
}

/***************************************************************
* 달력 관련 개체
***************************************************************/
var Calendar = {

	render : function(id) {
		$.datepicker.setDefaults({
			inline:true,
		    showMonthAfterYear:false,
		    dateFormat: 'yymmdd',
		    buttonImageOnly: true,
		    changeYear: true,
		    changeMonth: true,
		    showAnim : 'slideDown' 
		});

		$("#" + id).datepicker();

	}
}

//화면 사이즈 조정관련
/**
`* 화면사이즈(Document 영역)를 구한다.
`* @param {} null				: 
`* @return						: Array
`*/
function getBodySize(){
	var bodyWidth = document.body.offsetWidth;
	var bodyHeight = document.body.offsetHeight;
	return {width: bodyWidth, height : bodyHeight};
}

