document.write('<scr'+'ipt type="text/javascript" src="http://www.youngsamsung.com/ysrjs/AC_OETags.js" ></scr'+'ipt>');
// 검색 및 답변 팝업으로 쓸 창을 생성한다.
var searchWin;
var dialogWin;

/**
 * 이벤트 핸들러
 */
var EventHandler = function()
{
	// [Private] 이벤트 풀
	var _event_pool = [];
	
	// [Private] 이벤트 풀의 모든 이벤트 해제
	var _clear = function()
	{
		while (_event_pool.length > 0)
		{
			var evt = _event_pool.pop();
			
			evt[0].detachEvent("on"+evt[1], evt[2]);
		}
	}
	
	return {
		// [Public] 이벤트 등록
		add : function(oid, evt, func)
		{			
			//인자 초기화
			oid  = (oid != null && (oid == window || oid.nodeType == 1)) ? oid : document.getElementById(oid);
			evt  = (evt != null) ? ((evt.constructor == Array) ? evt : [evt.toString()]) : null;
			func = (typeof(func) == "function" && func.constructor == Function) ? func : null;
			if (oid == null || evt == null || func == null) return;

			//this 바인딩
			var bind = function()
			{
				func.apply(oid);
			}
			
			//이벤트 등록
			for (var i = 0; i < evt.length; i++)
			{
			
				evt[i] = evt[i].replace(/^on/i, "");
				
				if (oid.addEventListener != null)
				{
					oid.addEventListener(evt[i], bind, false);
				}
				else if (oid.attachEvent != null)
				{
					
					if (_event_pool.length > 0)
					{
						window.attachEvent("onunload", _clear);
						_event_pool.push([window, "onunload", _clear]);
					}
					
					oid.attachEvent("on"+evt[i], bind);
					_event_pool.push([oid, "on"+evt[i], bind]);
				}
			}
		},
		
		// [Public] 이벤트 해제
		remove : function(oid, evt, func)
		{
			//인자 초기화
			oid  = (oid != null && (oid == window || oid.nodeType == 1)) ? oid : document.getElementById(oid);
			evt  = (evt != null) ? ((evt.constructor == Array) ? evt : [evt.toString()]) : null;
			func = (typeof(func) == "function" && func.constructor == Function) ? func : null;
			
			if (oid == null || evt == null || func == null) return;
			
			//this 바인딩
			var bind = function()
			{
				func.apply(oid);
			}
			
			//이벤트 해제
			for (var i = 0; i < evt.length; i++)
			{
				evt[i] = evt[i].replace(/^on/i, "");
				
				if (oid.removeEventListener != null)
				{
					oid.removeEventListener(evt[i], bind, false);
				}
				else if (oid.detachEvent != null)
				{
					oid.detachEvent("on"+evt[i], bind);
				}
			}
		}
	}
}();

/**
 * 엘리먼트 슬라이더
 * display 사용
 *
 * @param {String|Object}  oid
 * @param {Number}         args.config.displayCount   화면에 보이는 아이템 갯수
 * @param {Number}         args.config.itemSlideCount 아이템 이동 갯수
 * @param {Number}         args.config.listSlideCount 리스트 이동 갯수
 * @param {Number}         args.config.startIndex     시작 인덱스
 * @param {Number}         args.config.timerInterval  타이머 간격
 * @param {Boolean}        args.config.setReverse     방향 전환 여부
 * @param {Boolean}        args.config.setRolling     롤링 사용 여부
 * @param {Boolean}        args.config.setTimer       타이머 설정 여부
 * @param {Function}       args.event.onItemClick     "element.onclick" 이벤트 핸들러
 * @param {Function}       args.event.onItemMouseOver "element.onmouseover" 이벤트 핸들러
 * @param {Function}       args.event.onItemMouseOut  "element.onmouseout" 이벤트 핸들러
 * @param {Function}       args.event.onSelectItem    "handler.selectItem" 이벤트 핸들러
 * @param {Function}       args.event.onPrevItem      "handler.prevItem" 이벤트 핸들러
 * @param {Function}       args.event.onNextItem      "handler.nextItem" 이벤트 핸들러
 * @param {Function}       args.event.onPrevList      "handler.prevList" 이벤트 핸들러
 * @param {Function}       args.event.onNextList      "handler.nextList" 이벤트 핸들러
 * @param {Function}       args.event.onSyncList      "handler.syncList" 이벤트 핸들러
 * @param {Function}       args.event.onReverse       "handler.reverse" 이벤트 핸들러
 * @param {Function}       args.event.onStartTimer    "handler.startTimer" 이벤트 핸들러
 * @param {Function}       args.event.onStopTimer     "handler.stopTimer" 이벤트 핸들러
 * @param {Function}       args.event.onSetInterval   "handler.setInterval" 이벤트 핸들러
 *
 * @return 제어용 핸들러 객체
 *
 * @description
 *     private functions
 *         _initialize()             초기화
 *         _getNextItemIndex(flow)   다음 아이템 인덱스 계산
 *         _getListIndexes(idx)      리스트 인덱스 계산
 *         _getNextListIndexes(flow) 다음 리스트 인덱스 계산
 *         _moveList(idxes)          리스트 이동
 *     public functions
 *         selectItem(idx) 아이템 선택
 *         prevItem()      이전 아이템 선택
 *         nextItem()      다음 아이템 선택
 *         prevList()      이전 리스트 이동
 *         nextList()      다음 리스트 이동
 *         syncList(idx)   리스트 싱크
 *         reverse()       진행 방향 전환
 *         startTimer()    타이머 시작
 *         stopTimer()     타이머 중지
 *         setInterval(ms) 타이머 간격
 *         getInfo()       슬라이더 정보
 */
var ElementDisplaySlider = function(oid, args)
{
	if (oid != null && oid.nodeType != 1) oid = document.getElementById(oid);
	if (oid == null) return null;
	if (args == null || typeof(args) != "object") args = {};
	if (args.config == null || typeof(args.config) != "object") args.config = {};
	if (args.event == null || typeof(args.event) != "object") args.event = {};
	
	/**
	 * [Private Object] 설정 객체
	 */
	var _config =
	{
		displayCount   : (args.config.displayCount   != null) ? Number(args.config.displayCount)       : 3,
		itemSlideCount : (args.config.itemSlideCount != null) ? Number(args.config.itemSlideCount)     : 1,
		listSlideCount : (args.config.listSlideCount != null) ? Number(args.config.listSlideCount)     : 1,
		startIndex     : (args.config.startIndex     != null) ? Number(args.config.startIndex)         : 0,
		timerInterval  : (args.config.timerInterval  != null) ? Number(args.config.timerInterval)      : 3000,
		setReverse     : (args.config.setReverse     != null) ? /^true$/i.test(args.config.setReverse) : false,
		setRolling     : (args.config.setRolling     != null) ? /^true$/i.test(args.config.setRolling) : false,
		setTimer       : (args.config.setTimer       != null) ? /^true$/i.test(args.config.setTimer)   : false
	}
	
	/**
	 * [Private Object] 이벤트 객체
	 */
	var _event = 
	{
		onItemClick     : args.event.onItemClick,
		onItemMouseOver : args.event.onItemMouseOver,
		onItemMouseOut  : args.event.onItemMouseOut,
		onSelectItem    : args.event.onSelectItem,
		onPrevItem      : args.event.onPrevItem,
		onNextItem      : args.event.onNextItem,
		onPrevList      : args.event.onPrevList,
		onNextList      : args.event.onNextList,
		onSyncList      : args.event.onSyncList,
		onReverse       : args.event.onReverse,
		onStartTimer    : args.event.onStartTimer,
		onStopTimer     : args.event.onStopTimer,
		onSetInterval   : args.event.onSetInterval
	}
	
	/**
	 * [Private Variable] 변수
	 */
	var _list       = oid;
	var _items      = [];
	var _item_idx   = _config.startIndex;
	var _list_idxes = [];
	var _flow_flag  = _config.setReverse ? "-" : "+";
	var _timer_obj  = null;
	var _timer_int  = _config.timerInterval;
	
	/**
	 * [Private Function] 초기화
	 */
	var _initialize = function()
	{
		//아이템 추출
		for (var i = 0; i < _list.childNodes.length; i++)
		{
			var ele = _list.childNodes[i];
			
			if (ele.nodeType == 1)
			{
				//배열에 추가
				_items.push(ele);
				
				//이벤트 등록
				if (_event.onItemClick     != null) EventHandler.add(ele, "onclick",     _event.onItemClick);
				if (_event.onItemMouseOver != null) EventHandler.add(ele, "onmouseover", _event.onItemMouseOver);
				if (_event.onItemMouseOut  != null) EventHandler.add(ele, "onmouseout",  _event.onItemMouseOut);
				
				//디스플레이 초기화
				ele.style.display = "none";
			}
		}
		
		if (_items.length > 0)
		{
			//리스트 이동
			_moveList(_getListIndexes(_item_idx));
			
			//아이템 선택
			_handler.selectItem(_item_idx);
			
			//타이머 시작
			if (_items.length > 1 && _config.setTimer) _handler.startTimer();
		}
	}
	
	/**
	 * [Private Function] 다음 아이템 인덱스 계산
	 *
	 * @param {String} flow 진행 방향 [+|-]
	 *
	 * @return 다음 아이템 인덱스
	 */
	var _getNextItemIndex = function(flow)
	{
		var ret = -1;
		var idx = (flow == "+") ? (_item_idx + _config.itemSlideCount) : (_item_idx - _config.itemSlideCount);
		var chk = (flow == "+") ? (idx < _items.length) : (idx >= 0);
		
		//롤링을 사용할 경우 인덱스 조정
		if (_config.setRolling)
		{
			if (idx < 0 || idx >= _items.length)
			{
				idx = (flow == "+") ? (idx - _items.length) : (idx + _items.length);
			}

			chk = true;
		}
		
		return chk ? idx : -1;
	}
	
	/**
	 * [Private Function] 리스트 인덱스 계산
	 *
	 * @param {Number} idx 아이템 인덱스
	 *
	 * @return 아이템 인덱스 배열
	 */
	var _getListIndexes = function(idx)
	{
		var ret = [];

		//롤링을 사용하지 않을 경우 인덱스 조정
		if (!_config.setRolling && idx > -1)
		{	
			idx = Math.floor(idx / _config.listSlideCount) * _config.listSlideCount;
		}
		
		//인덱스 배열화
		for (var i = 0; i < _config.displayCount; i++)
		{
			ret.push(idx);
			
			if (idx > -1)
			{
				idx++;
				if (idx >= _items.length) idx = _config.setRolling ? 0 : -1;
			}
		}
		
		return ret;
	}
	
	/**
	 * [Private Function] 다음 리스트 인덱스 계산
	 *
	 * @param {String} flow 진행 방향  [+|-]
	 *
	 * @return 아이템 인덱스 배열
	 */
	var _getNextListIndexes = function(flow)
	{
		var idx = (flow == "+") ? (_list_idxes[0] + _config.listSlideCount) : (_list_idxes[0] - _config.listSlideCount);
		var chk = (flow == "+") ? ((idx < _items.length) && ((idx + _config.displayCount - _config.listSlideCount) < _items.length)) : (idx >= 0);

		//롤링을 사용할 경우 인덱스 조정
		if (_config.setRolling)
		{
			if (idx < 0 || idx >= _items.length)
			{
				idx = (flow == "+") ? (idx - _items.length) : (idx + _items.length);
			}

			chk = true;
		}
		
		return chk ? _getListIndexes(idx) : [];
	}
	
	/**
	 * [Private Function] 리스트 이동
	 *
	 * @param {Array} idxes 아이템 인덱스 배열
	 */
	var _moveList = function(idxes, flow)
	{
		var regexp = new RegExp("(^|\s+)(" + idxes.toString().replace(/,/g, "|") + ")(\s+|$)");
		
		//롤링을 사용할 경우 아이템 재배치
		if (_config.setRolling)
		{	
			for (var i = idxes.length -1 ; i >= 0; i--)
			{				
				_list.insertBefore(_items[idxes[i]], _list.firstChild);
			}
		}		
		
		//디스플레이 갱신
		for (var i = 0; i < _items.length; i++)
		{
			_items[i].style.display = regexp.test(i) ? "" : "none";
		}
		
		//인덱스 저장
		_list_idxes = idxes;
	}
	
	/**
	 * [Return Object] 제어용 핸들러
	 */
	var _handler =
	{
		/**
		 * [Public Function] 아이템 선택
		 *
		 * @param {Number} idx 아이템 인덱스
		 */
		selectItem : function(idx)
		{
			//아이템 인덱스 저장
			_item_idx = idx;
			
			//타이머 재시작
			if (_timer_obj != null) _handler.startTimer();
			
			//이벤트 호출
			if (_event.onSelectItem != null) _event.onSelectItem(_handler.getInfo());
		},
		
		/**
		 * [Public Function] 이전 아이템 선택
		 */
		prevItem : function()
		{
			//인덱스 계산 
			var idx = _getNextItemIndex((_flow_flag == "-") ? "+" : "-");

			if (idx > -1)
			{
				//리스트 싱크
				if ((_flow_flag == "-") ? (_item_idx == _list_idxes[_list_idxes.length - 1]) : (_item_idx == _list_idxes[0]))
				{
					_handler.prevList();
				}
				
				//아이템 선택
				_handler.selectItem(idx);
				
				//이벤트 호출
				if (_event.onPrevItem != null) _event.onPrevItem(_handler.getInfo());
			}
			else
			{
				alert_module.show("alert", { msg : "이전 항목이 없습니다." });
			}
		},
		
		/**
		 * [Public Function] 다음 아이템 선택
		 */
		nextItem : function()
		{
			//인덱스 계산
			var idx = _getNextItemIndex((_flow_flag == "+") ? "+" : "-");
			
			if (idx > -1)
			{
				//리스트 싱크
				if ((_flow_flag == "+") ? (_item_idx == _list_idxes[_list_idxes.length - 1]) : (_item_idx == _list_idxes[0]))
				{
					_handler.nextList();
				}
				
				//아이템 선택
				_handler.selectItem(idx);
				
				//이벤트 호출
				if (_event.onNextItem != null) _event.onNextItem(_handler.getInfo());
			}
			else
			{
				alert_module.show("alert", { msg : "다음 항목이 없습니다." });
			}
		},
		
		/**
		 * [Public Function] 이전 리스트 이동
		 */
		prevList : function()
		{
			//인덱스 계산
			var idxes = _getNextListIndexes((_flow_flag == "-") ? "+" : "-");
			
			if (idxes.length > 0)
			{
				//리스트 이동
				_moveList(idxes);

				//이벤트 호출
				if (_event.onPrevList != null) _event.onPrevList(_handler.getInfo());
			}
			else
			{
				alert_module.show("alert", { msg : "이전 목록이 없습니다." });
			}
		},
		
		/**
		 * [Public Function] 다음 리스트 이동
		 */
		nextList : function()
		{
			//인덱스 계산
			var idxes = _getNextListIndexes((_flow_flag == "+") ? "+" : "-");
			
			if (idxes.length > 0)
			{
				//리스트 이동
				_moveList(idxes);
				
				//이벤트 호출
				if (_event.onNextList != null) _event.onNextList(_handler.getInfo());
			}
			else
			{
				alert_module.show("alert", { msg : "다음 목록이 없습니다." });
			}
		},
		
		/**
		 * [Public Function] 리스트 싱크
		 *
		 * @param {Number} idx 인덱스
		 */
		syncList : function(idx)
		{
			//인덱스 계산
			var idxes = _getListIndexes((idx != null) ? idx : _item_idx);

			//리스트 이동
			_moveList(idxes);
			
			//이벤트 호출
			if (_event.onSyncList != null) _event.onSyncList(_handler.getInfo());
		},
		
		/**
		 * [Public Function] 진행 방향 전환
		 */
		reverse : function()
		{
			//방향 저장
			_flow_flag = (_flow_flag == "+") ? "-" : "+";
			
			//타이머 재시작
			if (_timer_obj != null) _handler.startTimer();
			
			//이벤트 호출
			if (_event.onReverse != null) _event.onReverse(_handler.getInfo());
		},
		
		/**
		 * [Public Function] 타이머 시작
		 */
		startTimer : function()
		{
			//타이머 중지
			clearTimeout(_timer_obj);
			
			//타이머 시작
			_timer_obj = setTimeout(_handler.nextItem, _timer_int);
			
			//이벤트 호출
			if (_event.onStartTimer != null) _event.onStartTimer(_handler.getInfo());
		},
		
		/**
		 * [Public Function] 타이머 중지
		 */
		stopTimer : function()
		{
			if (_timer_obj != null)
			{
				//타이머 제거
				clearTimeout(_timer_obj);
				_timer_obj = null;
				
				//이벤트 호출
				if (_event.onStopTimer != null) _event.onStopTimer(_handler.getInfo());
			}
		},
		
		/**
		 * [Public Function] 타이머 간격
		 *
		 * @param {Number} ms 밀리세컨드
		 */
		setInterval : function(ms)
		{
			//타이머 간격 저장
			_timer_int = ms;
			
			//타이머 재시작
			if (_timer_obj != null) _handler.startTimer();
			
			//이벤트 호출
			if (_event.onSetInterval != null) _event.onSetInterval(_handler.getInfo());
		},
		
		/**
		 * [Public Function] 슬라이더 정보
		 *
		 * @return 슬라이더 정보 객체
		 */
		getInfo : function()
		{
			return {
				items               : _items,
				selectedItem        : _items[_item_idx],
				selectedItemIndex   : _item_idx,
				selectedListIndexes : _list_idxes,
				flowFlag            : _flow_flag,
				timerInterval       : _timer_int
			}
		}
	}

	_initialize();
	return _handler;
}

/**
 * 이미지 롤오버
 */
function imgMenuOverForBroadcast(containerID, selectedID)
{
    var _items = [];
    
    var root = (root != null && root.nodeType == 1) ? root : document.getElementById(containerID);
    var eles = (root != null) ? root.getElementsByTagName("a") : [];
    var flag = false;
    
    //아이템 추출 
    for (var i = 0; i < eles.length; i++)
    {
        var imgs = eles[i].getElementsByTagName("img");
        
        if (imgs.length > 0 && /(_out.gif|_over.gif)$/i.test(imgs[0].src))
        {
            _items.push(eles[i]);
        }
    }
    
    //이벤트 등록
    for (var i = 0; i < _items.length; i++)
    {
         EventHandler.add(_items[i], "onclick", function()
         {
             for (var x = 0; x < _items.length; x++)
             {
                 var img = _items[x].getElementsByTagName("img")[0];
                 
                 if (_items[x] == this)
                 {
                     img.src = img.src.replace(/_out.gif$/i, "_over.gif");
                     _items[x].className = "selected";
                 }
                 else
                 {
                     img.src = img.src.replace(/_over.gif$/i, "_out.gif");
                     _items[x].className = "";
                 }
             }
         });
        
        //onMouseOver
        EventHandler.add(_items[i], "onmouseover", function()
        {
            var img = this.getElementsByTagName("img")[0];
            
            if (this.className != "selected" && /_out.gif$/i.test(img.src))
            {
                img.src = img.src.replace(/_out.gif$/i, "_over.gif");
            }
        });
        
        //onMouseOut
        EventHandler.add(_items[i], "onmouseout", function()
        {
            var img = this.getElementsByTagName("img")[0];
            
            if (this.className != "selected" && /_over.gif$/i.test(img.src))
            {
                img.src = img.src.replace(/_over.gif$/i, "_out.gif");
            }
        });
    }
        
    //선택
    if (selectedID != null)
    {
        selectedID = (selectedID != null && selectedID.constructor == Array) ? selectedID : [selectedID.toString()];
     
        for (var i = 0; i < selectedID.length; i++)
        {
            for (var x = 0; x < _items.length; x++)
            {
                if (selectedID[i] == _items[x].id)
                {
                    var img = _items[x].getElementsByTagName("img")[0];
            
                    img.src = img.src.replace(/_out.gif$/i, "_over.gif");
                    _items[x].className = "selected";
    
                    flag = true;
                }
            }
        }
    }
    
    if (!flag && _items.length > 0)
    {
        var img = _items[selectedID].getElementsByTagName("img")[0];
        
        img.src = img.src.replace(/_out.gif$/i, "_over.gif");
        _items[selectedID].className = "selected";
    }
    
    //언로드 이벤트 등록
    EventHandler.remove(root, "onunload", function(){_items=null;});
}

/**
 * 이미지 롤오버
 */
function imgMenuOver(containerID, selectedID, ignoreOnClick)
{
	var _items = [];
	
	var root = (root != null && root.nodeType == 1) ? root : document.getElementById(containerID);
	var eles = (root != null) ? root.getElementsByTagName("a") : [];
	var flag = false;
	
	//아이템 추출 
	for (var i = 0; i < eles.length; i++)
	{
		var imgs = eles[i].getElementsByTagName("img");
		
		if (imgs.length > 0 && /(_out.gif|_over.gif)$/i.test(imgs[0].src))
		{
			_items.push(eles[i]);
		}
	}
	
	//이벤트 등록
	for (var i = 0; i < _items.length; i++)
	{
		//onClick
		if (!ignoreOnClick)
		{
			EventHandler.add(_items[i], "onclick", function()
			{
				for (var x = 0; x < _items.length; x++)
				{
					var img = _items[x].getElementsByTagName("img")[0];
					
					if (_items[x] == this)
					{
						img.src = img.src.replace(/_out.gif$/i, "_over.gif");
						_items[x].className = "selected";
					}
					else
					{
						img.src = img.src.replace(/_over.gif$/i, "_out.gif");
						_items[x].className = "";
					}
				}
			});
		}
		
		//onMouseOver
		EventHandler.add(_items[i], "onmouseover", function()
		{
			var img = this.getElementsByTagName("img")[0];
			
			if (this.className != "selected" && /_out.gif$/i.test(img.src))
			{
				img.src = img.src.replace(/_out.gif$/i, "_over.gif");
			}
		});
		
		//onMouseOut
		EventHandler.add(_items[i], "onmouseout", function()
		{
			var img = this.getElementsByTagName("img")[0];
			
			if (this.className != "selected" && /_over.gif$/i.test(img.src))
			{
				img.src = img.src.replace(/_over.gif$/i, "_out.gif");
			}
		});
	}
		
	//선택
	if (selectedID != null)
	{
		selectedID = (selectedID != null && selectedID.constructor == Array) ? selectedID : [selectedID.toString()];
	 
		for (var i = 0; i < selectedID.length; i++)
		{
			for (var x = 0; x < _items.length; x++)
			{
				if (selectedID[i] == _items[x].id)
				{
					var img = _items[x].getElementsByTagName("img")[0];
			
					img.src = img.src.replace(/_out.gif$/i, "_over.gif");
					_items[x].className = "selected";
	
					flag = true;
				}
			}
		}
	}
	
	if (!flag && _items.length > 0)
	{
		var img = _items[0].getElementsByTagName("img")[0];
		
		img.src = img.src.replace(/_out.gif$/i, "_over.gif");
		_items[0].className = "selected";
	}
	
	//언로드 이벤트 등록
	EventHandler.remove(root, "onunload", function(){_items=null;});
}

/**
 * FF, Opera 등에서 word-break 지원
 * 하나의 엘리먼트 대상
 *
 * @param {String|Object} root              루트 엘리먼트 또는 아이디   [default:null]
 * @param {Boolean}       args.useRecursion 자식노드 재귀호출 사용 여부 [default:false]
 */
var insertBreakWord = function(root, args)
{
	//IE|Chrome 지원 안함 (TODO::word-break 지원여부)
	if (/MSIE|Chrome/i.test(navigator.userAgent)) return;
	
	//인자 초기화
	root = (root != null && root.nodeType == 1) ? root : document.getElementById(root);
	args = (args != null && typeof(args) == "object") ? args : {};
	args.useRecursion = (args.useRecursion != null) ? /^true$/i.test(args.useRecursion) : false;
	
	if (root == null) return;

	//자식노드 루프
	for (var i = 0; i < root.childNodes.length; i++)
	{
		var node = root.childNodes[i];
		
		//노드가 엘리먼트이면
		if (args.useRecursion && node.nodeType == 1 && node.hasChildNodes())
		{
			insertBreakWord(node);
		}
		//노드가 텍스트이고 비어있지 않으면
		else if (node.nodeType == 3 && !/^\s*$/.test(node.nodeValue))
		{
			var str = node.nodeValue;

			str = str.replace(/\s+/g, " ");
			str = str.replace(/^\s+|\s+$/g, "");
			str = str.replace(/([^\n])/g, "$1"+String.fromCharCode(8203));

			node.nodeValue = str;
		}
	}
}

/**
 * FF, Opera 등에서 word-break 지원
 * 복수의 엘리먼트 대상
 *
 * @param {String|Object} root              루트 엘리먼트 또는 아이디       [default:null]
 * @param {String|Array}  args.searchTag    검색 태그명 또는 태그명배열     [default:*]
 * @param {String|Array}  args.searchClass  검색 클래스명 또는 클래스명배열 [default:null]
 * @param {Boolean}       args.useRecursion 자식노드 재귀호출 사용 여부     [default:false]
 */
var supportBreakWord = function(root, args)
{
	var tag = null;
	var cls = null;
	
	//IE|Chrome 지원 안함 (TODO::word-break 지원여부) 
	if (/MSIE|Chrome/i.test(navigator.userAgent)) return;
	
	//인자 초기화
	root = (root != null && root.nodeType == 1) ? root : document.getElementById(root);
	args = (args != null && typeof(args) == "object") ? args : {};
	args.searchTag    = (args.searchTag != null) ? ((args.searchTag.constructor == Array) ? args.searchTag : [args.searchTag.toString()]) : null;
	args.searchClass  = (args.searchClass != null) ? ((args.searchClass.constructor == Array) ? args.searchClass : [args.searchClass.toString()]) : null;
	args.useRecursion = (args.useRecursion != null) ? /^true$/i.test(args.useRecursion) : false;
	
	if (root == null) return;

	//변수 초기화
	tag = (args.searchTag != null && args.searchTag.toString().indexOf("*") == -1) ? args.searchTag : ["*"];
	cls = (args.searchClass != null) ? new RegExp("\\b("+args.searchClass.toString().replace(/,/g, "|")+")\\b") : null;
	
	//태그명으로 루프 
	for (var i = 0; i < tag.length; i++)
	{	
		var eles = root.getElementsByTagName(tag[i]);
		
		//태그명별 엘리먼트 루프
		for (var x = 0; x < eles.length; x++)
		{
			if (cls == null || cls.test(eles[x].className))
			{
				//줄바꿈 문자 삽입
				insertBreakWord(eles[x], {
					useRecursion : args.useRecursion
				});
			}
		}
	}
}


//2008.08.05 k.h.k : 현재 화면의 위치를 표시함.(메인 : 0, 서브 : 1)
var locationFlag;
var isBirth = false;

// 업로드관련
var reply0 = function(data) {
    if (data != null && typeof data == 'object') {
        //alert(DWRUtil.toDescriptiveString(data, 2));
    } else {
        DWRUtil.setValue('d0', DWRUtil.toDescriptiveString(data, 1));
    }
}

//2008.08.05 k.h.k : 현재 화면의 위치를 표시함.(메인 : 0, 서브 : 1)
function setLocationFlag(flag, birth) {
	locationFlag = flag;
	isBirth = birth;
}

function initPopupWin() {

	/*
    if($('searchPopupBtnDiv')) { 
        searchWin = new Window("searchWin", {className: "alphacube", width:170, height:75, zIndex: 100, resizable: false, minimizable:false, maximizable: false, draggable: false, wiredDrag: false });
    }
    if($('commentList')) {
        dialogWin = new Window("dialogWin", {className: "alphacomment", width:430, height:100, zIndex: 100, resizable: false, title: message["board.reply"], minimizable:false, maximizable: false, draggable:false, wiredDrag: false});
    }
    */
    
    // 업로드관련
    if (typeof(ACTION_URL) == "undefined") ACTION_URL = "";
    if(ACTION_URL != '' && (cmd =='edit' || cmd =='write' || cmd =='reply')){
    	if(window.UploadMonitor) UploadMonitor.getUploadInfo(reply0);
    }
    //alert("locationFlag ? " + locationFlag);
    //모든 메인섹션화면에서 실행(영삼성도서관(994), BO(10) 인 경우는 제외함.)
    //if(locationFlag != "undefined" && locationFlag != '994' && locationFlag != '10') {
    if(locationFlag == '99' || locationFlag == '999' || locationFlag == '998' || locationFlag == '997' || locationFlag == '996' || locationFlag == '995') {
    	//2008.07.31 k.h.k : 공지 popup start
    	showNoticePopup();
    	//2008.07.31 k.h.k : 메인 popup start
    	showMainPopup();
    	//2009.02.16 k.h.k : event popup start
    	//showEventPopup();
    	//2009.09.24 k.h.k : 쪽지 popup start
   		//showMsgPopup();
    	//2008.08.06 k.h.k : radio start
		//displayJWFLVMediaPlayerForRenewal("<fmt:message bundle='${msg}' key='board.link_uri'/>", "<fmt:message bundle='${msg}' key='common.web.server1'/>/podcast.do", "false", "120", "86", "120", "86", "120", "66");
		//2008.07.31 k.h.k : Floating Banner start
    	//showFloatingBanner();
		//2009.01.06 k.h.k : 하하하응원sms보내기 TX 이미지 셋팅
		//randomBG('memoTd');
	} 
	//else if(locationFlag == 1) {//Sub Menu 화면에서만 실행되는 함수
		//2008.07.31 k.h.k : event popup start
    	//showEventPopup();
		//2008.08.08 k.h.k : 쪽지 popup start
    	//showMsgPopup2();
	    //2008.08.22 k.h.k : 추석이벤트 또는 중간고사 시험 popup start
	  	//showChuseokImg(event);
	    //2008.10.06 k.h.k : 글자이벤트 popup start
	    //showCharImg();
		//2008.07.31 k.h.k : Floating Banner start
		//showFloatingBanner();

    //} else if(locationFlag == 2) {//search layout에서 실행되는 함수..
    	//2008.07.31 k.h.k : event popup start
    	//showEventPopup();
    	//2008.08.08 k.h.k : 쪽지 popup start
    	//showMsgPopup2();
    	//2008.07.31 k.h.k : Floating Banner start
		//showFloatingBanner();
    //}

    if(isBirth == 'true') {	//로긴한 유저가 생일인 경우
    	showBirthDayPopup();
    }
}

// 검색 및 답변 팝업으로 쓸 창을 소멸시킨다.
function destroyPopupWin() {
	//css cookie 저장
	if (typeof getActiveStyleSheet == 'function') {
	    var title = getActiveStyleSheet();

        // 2007.08.08 타사이트 회원가입 이벤트 관련 추가 style인 경우 cookie값이나 'blue'로 넣는다. by 박이정   
        if (title == 'noback') {
            var cookie = readCookie("style"); 
            title = cookie ? cookie : 'blue';
        }
	    //createCookie("style", title, 365);
	}
    if( searchWin == 'undefined' || searchWin == null) {
        //alert('undefined or null');
        return;
    }
    if(searchWin) {
        searchWin.destroy();
    }
    if(dialogWin) {
        dialogWin.destroy();
    }
}

// 팝업 윈도우 초기화 및 소멸
if (window.attachEvent) {
	//window.attachEvent("onload", initPopupWin);
	window.onload = initPopupWin;
	window.onunload = destroyPopupWin;
} else if (window.addEventListener) {
	window.addEventListener("load", initPopupWin, false);
	window.addEventListener("unload", destroyPopupWin, false);
}

var alert_module = function () {
	
	var type = 'alert'; // (alert || confirm)
	var layer, modalLayer;
	var ok_func, cancel_func;
	
	var _layer_make = function () {
		var div, p, strong, a, img, div2;
		layer = document.body.appendChild( document.createElement('div') );
		layer.className = 'poplayer message';
		layer.style.display = 'none';
		div = layer.appendChild( document.createElement('div') );
		div.className = 'layertitle';
		div = layer.appendChild( document.createElement('div') );
		div.className = 'layercont';
		p = div.appendChild( document.createElement('p') );
		p.id = 'layer_message';
		//strong = p.appendChild( document.createElement('strong') );
		div = layer.appendChild( document.createElement('div') );		
		div.className = 'layer_btm';
		div = div.appendChild( document.createElement('div') );
		div.className = 'btns';
		
		a = div.appendChild( document.createElement('a') );
		a.id = 'layer_ok';
		a.href = '#';
		a.onclick = _doOk;
		img = a.appendChild( document.createElement('img') );
		img.src = '/ysrimg/btns/btn_ok_01.gif';
		img.alt = '확인';

		a = div.appendChild( document.createElement('a') );
		a.id = 'layer_cancel';		
		a.href = '#';	
		a.onclick = _doCancel;
		img = a.appendChild( document.createElement('img') );
		img.src = '/ysrimg/btns/btn_cancel_02.gif';
		img.alt = '취소';		
	};
	
	var _doOk = function () {
		if (ok_func) ok_func();		
		modalLayer.close();
		return false;
	};
	
	var _doCancel = function () {
		if (cancel_func) cancel_func();
		modalLayer.close();
		return false;
	};
	
	
	return {
		show : function (type, opt) {
		
			ok_func = null;
			cancel_func = null;
			
			if (!layer) _layer_make();
			
			if (!modalLayer) modalLayer = modalMaker();
			
			this.type = type;
			
			if (opt.msg) e_('layer_message').innerHTML = opt.msg;
			
			if (opt.ok_func) ok_func = opt.ok_func;
			
			if (opt.cancel_func) cancel_func = opt.cancel_func;
			
			
			if (this.type == 'alert') {
				e_('layer_ok').style.display = '';
				e_('layer_cancel').style.display = 'none';
			} else {
				e_('layer_ok').style.display = '';
				e_('layer_cancel').style.display = '';
			}		
			
			modalLayer.show(layer);				
		}
	};
}();

function openMyNameCard(userId) {
	
	//alert(userId);
	
    var postData = "cmd=ajax_get_userInfo&listUserId=" + userId;
    new Ajax.Request("/combi.do", {
        method : 'POST',
        postBody: postData,
        encoding : 'UTF-8',
        onSuccess : function(xmlHttp) {
            var resultString = xmlHttp.responseText;
            var func = new Function("return " + resultString);
            var obj = func();
            if(obj.errcode == "0") {
            	//Admin or CompusReport or Ardor or Mania
            	//alert("UserName : " + obj.userName + ", AdminYn : " + obj.adminYn + ", CompusYn : " + obj.campusYn + ", ArdorYn : " + obj.ardorYn + ", Level : " + obj.level);
            	//alert("UUID : " + obj.strUuid + ", ServerName : " + obj.bangServerName);
    			//if(obj.adminYn == 'Y' || obj.campusYn == 'Y' || obj.ardorYn == 'Y' || obj.level > 9) {//Open 13ang
    			//20080922 k.h.k : open 13ang for all users
    			visitBangInBoard(obj.userName, obj.strUuid, obj.bangServerName);
    			//} else { //Open Namecard
    			//	openLoginUserNameCard(userId);
    			//}
    			//top.close();
            } else {
            	//alert("잠시 사용을 중단합니다.");
            }
        },
        onFailure : function() {
        	//alert("잠시 사용을 중단합니다.");
        }
    });
}

function visitBangInBoard(userName, strUuid, bangServerName){
	var newWindow;                                                             
    var winpos = 'left=0,top=0';
/****
    var winstyle = 'width=1000'                                                
		             + ',height=750'                                           
		             + ',status=no'                                            
		             + ',toolbar=no'                                           
		             + ',copyhistory=no'                                       
		             + ',menubar=no'                                           
		             + ',resizable=no'                                         
		             + ',location=yes'                                         
		             + ',scrollbars=no'                                        
		             + ',fullscreen=no,'                                       
		             + winpos;
****/
	if(bangServerName == null || bangServerName == "")
		bangServerName = "www.13ang.com";
	var bangUrl = "http://" + bangServerName + "/sns/" + userName;
	var winName = userName + strUuid;
	//alert(winName);
    //newWindow = window.open(bangUrl, winName, winstyle);
    newWindow = window.open(bangUrl, winName);
}


/**
* 공통 관련 이벤트 처리부분
*/
var Common = {
    copyShowTimer : null,
    copyHideTimer : null,

	layer : function(layer_id)
	{
		ysr_modal.show(layer_id);
	},
	
	layer2 : function(layer_id)
	{
		ysr_modal2.show(layer_id);
	},

    // 스크랩 팝업 띄우기 
    scrap: function(formName, targetForm, url, cmd, seq, tid, title, userId, writerDate) {
        if(user_id == '') {
            alert_module.show('confirm', {
	   			msg : message["board.alert.login.msg"],
		   			ok_func : function () {
						location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
						return;
		   			},
		   			cancel_func : function () {
		   				return;
		   			}
	   		});
	   		return;
        }
        
        var postData = "";
        userId = user_id; // 로그인한 사용자 아이디 
        postData += "cmd=scrap_count";
        postData += "&seq=" + seq;
        postData += "&title=" + title;
        postData += "&userId=" + userId;
        postData += "&url=" + url;
        postData += "&tid=" + tid;
        
        //alert(postData);
        
        // 해당 게시물을 스크랩 했는지 여부를 Ajax로 알아본다. 스크랩 했으면 팝업을 띄워준다.
        new Ajax.Request(url, {
            method : 'POST',
            postBody: postData,
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if(obj.errcode == "0") {
                    $(targetForm).cmd.value = cmd;
                    $(targetForm).seq.value = seq;
                    $(targetForm).tid.value = tid;
                    $(targetForm).title.value = title;
                    $(targetForm).userId.value = userId;
                    $(targetForm).url.value = url;
                    $(targetForm).writerDate.value = writerDate;
                    
                    //goPostPopup(targetForm, 'SCRAP_WIN', url, 'SCRAP', 335, 220);
                    //return false;
                    ysr_modal.show('scrap_send');
                } else if(obj.errcode == "100") {
                    alert_module.show('alert', {
		    			msg : message["board.alert.scrap.duplicate"]
		    		});
		    		return;
                } else {
                    alert_module.show('alert', {
		    			msg : message["board.alert.scrap.failed"]
		    		});
		    		return;
                }
            }
        });
    },
    
    // 스크랩하기
    scrapInsert: function(formName, url) {
    	/*
    	* 카테고리 없을시도 등록
		*
    	if($(formName).categoryId.value == ""){
    		alert_module.show('alert', {
    			msg : message["admin.alert.category"]
    		});
    		return;
    	}
    	*/
    
        // 스크랩 저장을 Ajax로 처리한다.
        new Ajax.Request(url, {
            method : 'POST',
            parameters:Form.serialize($(formName)),
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if(obj.errcode == "0") {
                	//스크랩 수 변경
                	var tid = document.getElementById(formName).tid.value;
					var seq = document.getElementById(formName).seq.value;
					var scrapData = "cmd=selectScrapCnt&tid=" + tid + "&seq=" + seq;
					
					ysr_modal.change_content('scrap_ok');
					Common.selectScrapCnt(url, scrapData); 
                	return;
                } else if(obj.errcode == "100") {
                    alert_module.show('alert', {
		    			msg : message["board.alert.scrap.duplicate"]
		    		});
		    		return;
                } else {
                    alert_module.show('alert', {
		    			msg : message["board.alert.scrap.failed"]
		    		});
		    		return;
                }
            }
        });
    },
    
    writerSearch : function(nickName, actionUrl) {
        if($('list_form')) {
            $('list_form').nickSearch.value = 'Y';
            $('list_form').word.value = nickName;
            if($('view_form')) {
                Board.view_page(actionUrl, 'list_form', 'board_list', '1');
            } else {
                Board.search(actionUrl, 'list_form', 'board_list');
            }
        }
    },
	    
    // PRINT 팝업 띄우기
    print: function(formName, url, cmd, seq, tid) {
        $(formName).cmd.value = cmd;
        $(formName).seq.value = seq;
        $(formName).tid.value = tid;

        var winprops = "resizable=no, location=no, scrollbars=yes";
        goPostPopup2(formName, 'PRINT_WIN', url, 'PRINT', 760, 800, winprops);
    },
    
    // 2008.09.01 k.h.k : 추석이벤트용 팝업 띄우기
    chuseok: function(formName, url, cmd) {
        $(formName).cmd.value = cmd;
        var winprops = "resizable=no, location=no, scrollbars=no";
        goPostPopup2(formName, 'MAIL_WIN', url, 'MAIL', 335, 295, winprops);
	},
	
    // 이메일보내기 팝업 띄우기
    email: function(formName) {
        /*$(formName).cmd.value = cmd;
        $(formName).seq.value = seq;
        $(formName).tid.value = tid;

        var winprops = "resizable=no, location=no, scrollbars=no";
        goPostPopup2(formName, 'MAIL_WIN', url, 'MAIL', 335, 340, winprops);*/
        
        $(formName).to.value = "";
        $(formName).content.value = "";
        
        ysr_modal.show('email_send');
    },
    
    // 메일보내기
    emailSend: function(formName, url) {
    	//blank체크
    	if ($(formName).to.value == '') {
    		//Common.alertDialog(message["board.alert.email.check.to"]);
    		
    		alert_module.show('alert', {
    			msg : message["board.alert.email.check.to"]
    			//ok_func : function () {
    			//	alert('ok');
    			//},
    			//cancel_func : function () {
    			//	alert('cancel');
    			//}
    		});
    		
    		$(formName).to.focus();
    		return;
    	}
    	
        var emails = $(formName).to.value.split(';');
        for (var i = 0; i < emails.length; i++) {
            if(Common.CheckEmailAddr(emails[i]) == false) {
                $(formName).to.select();
                return;
            } 
        }
        
    	if ($(formName).content.value == '') {
    		//Common.alertDialog(message["board.alert.email.check.to"]);
    		
    		alert_module.show('alert', {
    			msg : message["board.email.attach"] + message["join.missing"]
    			//ok_func : function () {
    			//	alert('ok');
    			//},
    			//cancel_func : function () {
    			//	alert('cancel');
    			//}
    		});
    		
    		$(formName).content.focus();
    		return;
    	}
        
        // 메일보내기를 Ajax로 처리한다.
        new Ajax.Request(url, {
            method : 'POST',
            parameters:Form.serialize($(formName)),
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if(obj.errcode == "0") {
                	var email_to = document.getElementById('email_to').value;
                	var show = document.getElementById('show_email_to');
                	//replaceText(show, email_to );
                	email_to = email_to.replace(/([^;]+[;|\b])/g, "$1<br />");
                	show.innerHTML = "<br />" + email_to;
					ysr_modal.change_content('email_ok');              
                } else {
                    ysr_modal.change_content('email_fail');
                }
            }
        });
    },
    
    // 신고 팝업 띄우기
    report: function(formName, url, cmd, seq, tid) {
        if(userId == '') {
            //Common.loginConfirmDialog(message["board.alert.login.msg"]);
   			alert_module.show('confirm', {
	   			msg : message["board.alert.login.msg"],
		   			ok_func : function () {
						location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
						return;
		   			},
		   			cancel_func : function () {
		   				return;
		   			}
	   		});
            return;
        }
        
        var postData = "";
        postData += "cmd=" + cmd;
        postData += "&seq=" + seq;
        postData += "&tid=" + tid;
        
        // 해당 게시물을 신고 했는지 여부를 Ajax로 알아본다. 신고 했으면 팝업을 띄워준다.
        new Ajax.Request(url, {
            method : 'POST',
            postBody: postData,
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if(obj.errcode == "0") {
                	$(formName).tid.value = tid;
                	$(formName).seq.value = seq;
                    $(formName).gubun.value = obj.gubun;
                    $(formName).report_title.value = obj.report_title;
                    //$('report_title').innerHTML = obj.report_title;
                    ysr_modal.show('report_send');
                } else if(obj.errcode == "100") {
                    alert_module.show('alert', {
		    			msg : message["board.alert.report.duplicate"]
		    		});
		    		return;
                } else {
                    alert_module.show('alert', {
		    			msg : message["board.alert.report.failed"]
		    		});
		    		return;
                }
            }
        });
    },
    
    // 신고하기
    reportInsert: function(formName, url) {
    	if(userId == '') {
            Common.loginConfirmDialog(message["board.alert.login.msg"]);
            return;
        }
        
    	$(formName).boardUrl.value = document.location.href;
        // 신고하기를 Ajax로 처리한다.
        new Ajax.Request(url, {
            method : 'POST',
            parameters:Form.serialize($(formName)),
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if(obj.errcode == "0") {
					ysr_modal.change_content('report_ok');
					$('report_ok_title').innerHTML = $(formName).report_title.value;
                	return;
                } else if(obj.errcode == "100") {
                    alert_module.show('alert', {
		    			msg : message["board.alert.report.duplicate"]
		    		});
		    		return;
                } else {
                    alert_module.show('alert', {
		    			msg : message["board.alert.report.failed"]
		    		});
		    		return;
                }
            }
        });
    },
    
    // Ajax로 FLASH TYPE 추천 배너를 가져온다.
    /*
	bestBanner : function(mid, targetPosition) {
		var postData = "cmd=ajax_get_banner&mid=" + mid;
    	new Ajax.Request("/combi.do", {
			method : 'POST',
			postBody: postData,
			encoding : 'UTF-8',
			onComplete : function(xmlHttp) {
				var root = xmlHttp.responseXML.documentElement;
				var xml_banner = document.getElementById(targetPosition); //innerHTML 영역
				xml_banner.innerHTML = makeBanner(root);
			}
		});
	},*/
    
    // 엘리먼트 숨기기
    hide : function(divElement) {
        if($(divElement)) {
            $(divElement).style.display = 'none';
        }
    },
    
    // 엘리먼트 보기게 하기
    show : function(divElement) {
        if($(divElement)) {
            $(divElement).style.display = 'block';
        }
    },
    
    // 엘리먼트 숨기기
    copyDivHide : function(divElement) {
        if($(divElement)) {
            $(divElement).style.display = 'none';
        }
    },
    
    // 엘리먼트 보이게 하기
    copyDivShow : function(divElement) {
        if(Common.copyShowTimer) {
            clearTimeout(Common.copyShowTimer);
        }
        if($(divElement)) {
            $(divElement).style.display = 'block';
        }
        Common.copyShowTimer = setTimeout(function() {Common.copyDivHide(divElement)}, 1000);
    },
    
    // 링크 복사  / 컨텐츠 복사 스크랩 수를 업데이트한다.
    updateClipboardCnt : function(url, postData, type, tid, seq) {
        // 보내기만 하고 결과를 받아서 처리는 하지 않는다.
        var scrapData = "cmd=selectScrapCnt&tid=" + tid + "&seq=" + seq;
        new Ajax.Request(url, {
            method : 'POST',
            postBody: postData,
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
            	if(type != ''){
            		if(type == "C"){
			    		alert_module.show('alert', {
			    			msg : message["board.content_copy_complete"] + message["board.ctrlv"],
			    			ok_func : function () {
			    				Common.selectScrapCnt(url, scrapData); 
			    			}
			    		});
            		}
            		if(type == "L"){
			    		alert_module.show('alert', {
			    			msg : message["board.alert.linkcopy.ok"],
			    			ok_func : function () {
			    				Common.selectScrapCnt(url, scrapData); 
			    			}
			    		});
            		} 
            		if(type == "M"){
                        alert_module.show('alert', {
                            msg : message["board.alert.moviecopy.ok"],
                            ok_func : function () {
                                Common.selectScrapCnt(url, scrapData); 
                            }
                        });
                    } 
            	}
            }
        });
    },
    
    // 스크랩 수를 가져온다.
    selectScrapCnt : function(url, scrapData) {
        new Ajax.Request(url, {
            method : 'POST',
            postBody: scrapData,
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
            	//스크랩 수 변경
				if(document.getElementById('scrapCount')){
					document.getElementById('scrapCount').innerHTML = message["admin.c.scrap_cnt"] + " : " + obj.scrapCnt;
				}
            }
        });
    },
    
    ConfirmDialog : function(message) {
        Dialog.confirm(message,
		{
			className: "alphalogin",
			width:230,
			okLabel: message["confirm.ok"],
			cancelLabel : message["confirm.cancel"],
			buttonClass: "buttonClass",
			id: "loginConfirm",
			cancel:function(win) {
				return true;
			},
			ok:function(win) {
				return true;
			}
		});
    },
    
    loginConfirmDialog : function(message, nextUrl) {
	    alert_module.show('confirm', {
   			msg : message,
	   			ok_func : function () {
					location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
					return;
	   			},
	   			cancel_func : function () {
	   				return;
	   			}
   		});
   		return;
    },
    
    // 2008.08.28 k.h.k : 추석이벤토용 로긴 함수
	loginConfirmDialogChuseok : function(message, formName, nextUrl) {
		if( nextUrl == 'undefined' || nextUrl == null) {
			nextUrl = NEXT_URL;
		}
		Dialog.confirm(message,
		{
			className: "alphalogin",
			width:230,
			okLabel: message["confirm.ok"],
			cancelLabel : message["confirm.cancel"],
			buttonClass: "buttonClass",
			id: "loginConfirm",
			cancel:function(win) {
				return true;
			},
			ok:function(win) {
				//alert("??? " + $(formName).cstype.value + " :: " + $(formName).csname.value + " : " + $(formName).cspoint.value + " : " + $(formName).cscheckno.value);
				//location.href = "/login.do?cmd=login&csname="+$(formName).csname.value+"&cstype="+$(formName).cstype.value+"&cspoint="+$(formName).cspoint.value+"&cscheckno="+$(formName).cscheckno.value+"&nextUrl="+nextUrl;
				//return true;
				$(formName).action = "/login.do";
        		$(formName).method = "post";
        		$(formName).cmd.value = "login";
        		$(formName).nextUrl.value = nextUrl;
        		$(formName).submit();
			}
		});
	},
	
	// 2008.10.06 k.h.k : 글자이벤토용 로긴 함수
	loginConfirmDialogChar : function(message, charType, nextUrl) {
		if( nextUrl == 'undefined' || nextUrl == null) {
			nextUrl = NEXT_URL;
		}
		Dialog.confirm(message,
		{
			className: "alphalogin",
			width:230,
			okLabel: message["confirm.ok"],
			cancelLabel : message["confirm.cancel"],
			buttonClass: "buttonClass",
			id: "loginConfirm",
			cancel:function(win) {
				return true;
			},
			ok:function(win) {
				location.href = "/login.do?cmd=login&charType="+charType+"&nextUrl="+nextUrl;
				return true;
			}
		});
	},
	
    alertDialog : function(message) {
        alert_module.show('alert', {
   			msg : message
   		});
   		return;
    },
    
    writerSearch : function(nickName, actionUrl) {
        if($('list_form')) {
            if($('view_form')) {
            	$('list_form').searchCndt.value = 'nick';
            	$('list_form').word.value = nickName;
                Board.view_page(actionUrl, 'list_form', 'board_list', '1');
            } else {
            	$('list_form').search_cndt.value = 'nick';
            	$('list_form').checkWord.value = nickName;
                Board.search(actionUrl, 'list_form', 'board_list');
            }
        }
    },
    
    sendMessagePopup : function(nickName, formName, cmd) {
        if(userId == '') {
            Common.loginConfirmDialog(message["board.alert.login.msg"]);
            return;
        }
        
        if (formName == null || formName.length == 0) formName = 'list_form';
        if ($(formName) == null) formName = 'view_form';
        if ($(formName) == null) formName = 'main_message_form';
       	if ($(formName) == null) formName = 'message_form';
       	if ($(formName) == null) formName = 'logout_form';
       	
        if (cmd == null || cmd.length == 0) cmd = "write";
        
        if($(formName)) {
            $(formName).cmd.value = cmd;
            if($(formName).page){
            	$(formName).page.value = 1;
            }
            if($(formName).sendNickName){
            	$(formName).sendNickName.value = (nickName != null) ? nickName : "";//userNickName;
            }
            //$(formName).action = "/message.do";
            var winprops = "resizable=no, location=no, scrollbars=no";
            goPostPopup2(formName, 'Message', 'message.do', 'Message', 442, 510, winprops);
        }
    }, 
    
    // 친구에게 추천하기 팝업
    recommendFriendPoup : function()
    {
    	if (userId == null || userId == "")
    	{
    		Common.loginConfirmDialog(message["board.alert.login.msg"]);
            return;
    	}
    	
    	var w = 720;
    	var h = 605;
    	var l = (screen.width - w) / 2;
    	var t = (screen.height - h) / 2;
		window.open("/combi.do?cmd=recommend_friend_main", "FriendRecommendWin", "width="+w+", height="+h+", left="+l+", top="+t+", resizable=no, location=no, scrollbars=no");
    },
    
    mailWindow:function(mailAddress) {
        var mail_str = "mailto:" + mailAddress;
        location.href = mail_str;
    },
    
    // 신구 신청하기 레이어
    friendLink : function(userIdTo, userIdToNickName) {
        if(userId == '') {
            Common.loginConfirmDialog(message["board.alert.login.msg"]);
            return;
        }
        
        var postData = "";
        postData += "cmd=friend_link";
        postData += "&userIdTo=" + userIdTo;
        postData += "&userIdToNickName=" + userIdToNickName;
        
        new Ajax.Request('/combi.do', {
            method : 'POST',
            postBody: postData,
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if(obj.isExist == "0") {
                	$('friend_form').userIdTo.value = obj.userIdTo;
                	$('friend_form').userIdToNickName.value = userIdToNickName;
                	$('friend_nickName').innerHTML = obj.userIdToNickName;
                	ysr_modal.show('friend_send');
                } else {
                    alert_module.show('alert', {
		    			msg : userIdToNickName + " " +message["message.friend.duplicate"]
		    		});
		    		return;
                }
            }
        });
    },
    
    // 신구 신청하기
    friendSend : function(friend_form, actionUrl) {
    	var frm = e_(friend_form);
    	
    	if(trim(frm.userIdTo.value) == '') {
	       	alert_module.show('alert', {
    			msg : message["message.friend.fail.nick"]
    		});
	        return;
	    }
	    
	    if(trim(e_('message').value) == '') {
	        alert_module.show('alert', {
    			msg : message["message.friend.fail.message"]
    		});
	        return;
	    }

		var params = 'cmd=' + frm.cmd.value + '&userIdTo=' + frm.userIdTo.value + '&userIdToNickName=' + frm.userIdToNickName.value + '&message=' + encodeURI(e_('message').value);
	    new Ajax.Request('/combi.do', {
	        method : 'POST',
	        parameters : params,
	        encoding : 'UTF-8',
	        onSuccess : function(xmlHttp) {  
	            var resultString = xmlHttp.responseText;
	            var func = new Function("return " + resultString);
	            var obj = func();
	           
	            if(obj.errcode == "0") {
	            	$('friend_ok_nickName').innerHTML = frm.userIdToNickName.value;
	            	$('friend_ok_nickName_result').innerHTML = frm.userIdToNickName.value;
	                ysr_modal.change_content('friend_ok');
                	return;
	            } else if(obj.errcode == "100") {
	                alert_module.show('alert', {
		    			msg : message["message.friend.fail.login"]
		    		});
	                return;
	            } else {
	                alert_module.show('alert', {
		    			msg : message["message.friend.fail"]
		    		});
	                return;
	            }
	        }
	    });
	 	frm.message.value = message["message.content.msg"];
    },
    
    //이메일 체크함수
    CheckEmailAddr: function(strAddr) {
      var arrAddr;
      var arrMatch;
      var strEmail;
    
      if(strAddr.length == 0) 
        return true;
      
      arrAddr = strAddr.replace(/,/, ",").split(",");
    
      for (var i = 0; i < arrAddr.length; i++) {
        arrMatch = arrAddr[i].match(/^([^<>]*)<([^<>]+)>$/);
        if (arrMatch == null) strEmail = arrAddr[i];
        else strEmail = arrMatch[2];
    
        if (strEmail != "") {
          if (Common.checkEmail(strEmail) == false) {
            //alert(message["join.wrongEmail"]);
            //Common.alertDialog(message["join.wrongEmail"]);
            alert_module.show('alert', {
            	msg : message["join.wrongEmail"]
            })         
            return false;
          }
        }
      }
      return true;
    },
    
    checkEmail: function(strEmail) {
      var arrMatch = strEmail.match(/^(\".*\"|[A-Za-z0-9_-]([A-Za-z0-9_-]|[\+\.])*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z0-9][A-Za-z0-9_-]*(\.[A-Za-z0-9][A-Za-z0-9_-]*)+)$/);
      if(arrMatch == null) return false;
    
      return true;    
    },
    
    // 내 경험치 가져오기
    getMyExpForScrap: function() {
        // 스크랩 저장을 Ajax로 처리한다.
        new Ajax.Request("/combi.do?cmd=my_exp", {
            method : 'POST',
            //parameters:Form.serialize($(formName)),
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if(obj.errcode == "0") {
                    //alert("experience : [" + obj.experience + "], level : [" + obj.level + "]");
                    if(opener.$('myExperience')) {
                        opener.$('myExperience').innerHTML = obj.experience+ "/" + obj.maxExp;
                    }
                    if($('myExperience')) {
                        opener.$('myExperienceLevel').innerHTML = obj.level;
                    }
                    return false;
                } else if(obj.errcode == "100") {
                    return false;
                } else {
                    return false;
                }
            }
        });
    },
    
    // 내 경험치 가져오기
    getMyExp: function() {
        // 스크랩 저장을 Ajax로 처리한다.
        new Ajax.Request("/combi.do?cmd=my_exp", {
            method : 'POST',
            //parameters:Form.serialize($(formName)),
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if(obj.errcode == "0") {
                    //alert("experience : [" + obj.experience + "], level : [" + obj.level + "], maxExp : [" + obj.maxExp + "]");
                    if($('myExperience')) {
                        $('myExperience').innerHTML = obj.experience + "/" + obj.maxExp;
                    }
                    if($('myExperience')) {
                        $('myExperienceLevel').innerHTML = obj.level;
                    }
                    return false;
                } else if(obj.errcode == "100") {
                    return false;
                } else {
                    return false;
                }
            }
        });
    },
    
    // 덧글 수를 가져오기
    getCommentCount: function(targetForm) {
        new Ajax.Request("/combi.do?cmd=commentCount", {
            method : 'POST',
			postBody: Form.serialize($(targetForm)),
			encoding : 'UTF-8',
			onComplete : function(xmlHttp) {
                var resultString = xmlHttp.responseText;
                var func = new Function("return " + resultString);
                var obj = func();
                if($('comment_total')) {
                    $('comment_total').innerHTML = "(" + obj.cmtTotalRealCount + ")";
                    return;
                }
            }
        });
    }
}

// 방송국에서 사용하는 컨텐츠복사
function clipboardCopyForBroadcast(tagNo, copyType, tid, seq, mediaFg)
{
    // 245 tid 는 V_BROADCAST view테이블이라 라디오냐, 동영상이냐에 따라 T_PODCAST, P_STATION 으로 분기하여 스크랩수 업데이트.
    if(tid == '245')
    {
        if(mediaFg == 'RADIO')
        {
            tid = '247';
        }
        else if(mediaFg == 'TV')
        {
            tid = '131';
        }
        else
        {
            alert('Wrong media type'); return;
        }
    }
    
    var clipTagId = "clipTag" + tagNo;
    var clipboardTag = document.getElementById(clipTagId).value;;
    var realTag = "";

    if(clipboardTag.indexOf("<object") == -1)
    {
        var mediaId = clipboardTag.substring(clipboardTag.lastIndexOf("/")+1,clipboardTag.lastIndexOf(".flv"));
        var clipCopy = document.getElementById('clipCopy').value;
        realTag = clipCopy.replaceAll("mediaId", mediaId);
    }
    else
    { 
        realTag = clipboardTag;
    }

    clipboard_copy_for_broadcast(realTag, copyType, tid, seq);

}
// IE와 FF에서 모두 작동하는 클립보드 복사 
// 방송국에서 사용하는 클립보드 복사
function clipboard_copy_for_broadcast(str, copyType, tid, seq) {
    // 링크 복사 수를 업데이트한다.
    if(trim(tid) != '' && trim(seq) != '' && trim(copyType) != '') {
        var postData = "cmd=update_clipboard_cnt&tid=" + tid + "&seq=" + seq + "&copyType=" + copyType;
        Common.updateClipboardCnt("/combi.do", postData, 'M', tid, seq);
    }

    if (document.selection) { 
        bResult = window.clipboardData.setData("Text", str); 
    } else { 
        str = encodeforFlash(str); 
        var flashcopier = 'flashcopier'; 
        if(!document.getElementById(flashcopier)) { 
            var divholder = document.createElement('div'); 
            divholder.id = flashcopier; 
            document.body.appendChild(divholder); 
        } 
        document.getElementById(flashcopier).innerHTML = ''; 
        var divinfo = '<embed src="/js/clipboard.swf" FlashVars="clipboard='+str+'" width="1" height="1" type="application/x-shockwave-flash"></embed>'; 
        document.getElementById(flashcopier).innerHTML = divinfo; 
    }
}

function clipboardCopy(tagNo, copyType, tid, seq, mediaFg)
{
	// 245 tid 는 V_BROADCAST view테이블이라 라디오냐, 동영상이냐에 따라 T_PODCAST, P_STATION 으로 분기하여 스크랩수 업데이트.
	if(tid == '245')
	{
		if(mediaFg == 'RADIO')
		{
			tid = '247';
		}
		else if(mediaFg == 'TV')
		{
			tid = '131';
		}
		else
		{
			alert('Wrong media type'); return;
		}
	}
	
	var clipTagId = "clipTag" + tagNo;
	var clipboardTag = document.getElementById(clipTagId).value;;
	var realTag = "";

	if(clipboardTag.indexOf("<object") == -1)
	{
		var mediaId = clipboardTag.substring(clipboardTag.lastIndexOf("/")+1,clipboardTag.lastIndexOf(".flv"));
		var clipCopy = document.getElementById('clipCopy').value;
		realTag = clipCopy.replaceAll("mediaId", mediaId);
	}
	else
	{ 
		realTag = clipboardTag;
	}

	clipboard_copy(realTag, copyType, tid, seq);

	// 검정색의 퍼기가 레이어 표시 안하기.
	//document.getElementById("clipTagAlertDiv").style.display = "block";
}

function clipTagAlert()
{
	document.getElementById("clipTagAlertDiv").style.display = "none";
}
// IE와 FF에서 모두 작동하는 클립보드 복사 
function clipboard_copy(str, copyType, tid, seq) {
    // 링크 복사 수를 업데이트한다.
    if(trim(tid) != '' && trim(seq) != '' && trim(copyType) != '') {
        var postData = "cmd=update_clipboard_cnt&tid=" + tid + "&seq=" + seq + "&copyType=" + copyType;
        Common.updateClipboardCnt("/combi.do", postData, 'L', tid, seq);
    }

    if (document.selection) { 
        bResult = window.clipboardData.setData("Text", str); 
    } else { 
        str = encodeforFlash(str); 
        var flashcopier = 'flashcopier'; 
        if(!document.getElementById(flashcopier)) { 
            var divholder = document.createElement('div'); 
            divholder.id = flashcopier; 
            document.body.appendChild(divholder); 
        } 
        document.getElementById(flashcopier).innerHTML = ''; 
        var divinfo = '<embed src="/js/clipboard.swf" FlashVars="clipboard='+str+'" width="1" height="1" type="application/x-shockwave-flash"></embed>'; 
        document.getElementById(flashcopier).innerHTML = divinfo; 
    }
	alert_module.show('alert', {
		msg : message["board.alert.linkcopy.ok"]
	});
}

function clipboard_copy_body(str, copyType, tid, seq, url, title) {
    // 링크 복사 수를 업데이트한다.
    if(trim(tid) != '' && trim(seq) != '' && trim(copyType) != '') {
        var postData = "cmd=update_clipboard_cnt&tid=" + tid + "&seq=" + seq + "&copyType=" + copyType;
        Common.updateClipboardCnt("/combi.do", postData, 'C', tid, seq);
    }
    
    var originHTML = $(str).innerHTML;
    var linkStr = "<p><a href=\""+url+"\">["+message['board.content.origin']+"] "+title+"</a>";
   
	// 내용 뒤에 다른 곳에 붙였을 경우 가져올 정보를 담아둔다.
	var useHTML = "<img src=\"" + message["host.url"] + "/combi.do?cmd=clipboard_use&tid="+tid+"&seq="+seq+"\" width='0' height='0' style='display:none' />";
    if (document.selection) { 
        //bResult = window.clipboardData.setData("Text", $(str).innerHTML+useHTML);
        // 한번만 replace
        if ($(str).innerHTML.indexOf(message["host.url"] + "/combi.do?cmd=clipboard_use") < 0) {
        	//$(str).innerHTML = cssHTML + $(str).innerHTML + useHTML;
        	//$(str).innerHTML = $(str).innerHTML + useHTML;
        }
        $(str).innerHTML = $(str).innerHTML + linkStr;

		var txt = document.body.createTextRange();
		txt.moveToElementText($(str));
		//txt.select();
		txt.execCommand("copy");
		document.selection.empty();
		
		$(str).innerHTML = originHTML;
    } else { 
        str = encodeforFlash($(str).innerHTML+useHTML); 
        var flashcopier = 'flashcopier'; 
        if(!document.getElementById(flashcopier)) { 
            var divholder = document.createElement('div'); 
            divholder.id = flashcopier; 
            document.body.appendChild(divholder); 
        } 
        document.getElementById(flashcopier).innerHTML = ''; 
        var divinfo = '<embed src="/js/clipboard.swf" FlashVars="clipboard='+str+'" width="1" height="1" type="application/x-shockwave-flash"></embed>'; 
        document.getElementById(flashcopier).innerHTML = divinfo; 
    }
    /*
	alert_module.show('alert', {
		msg : message["board.content_copy_complete"]
	});
	*/
}

function encodeforFlash(str) 
{ 
    var SAFECHARS = "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "-_.!~*'()"; 

    var HEX = "0123456789ABCDEF"; 

    var plaintext = str; 
    var encoded = ""; 
    for (var i = 0; i < plaintext.length; i++ ) { 
        var ch = plaintext.charAt(i); 
        if (ch == " ") { 
            encoded += "+"; 
        } else if (SAFECHARS.indexOf(ch) != -1) { 
            encoded += ch; 
        } else { 
            var charCode = ch.charCodeAt(0); 
            if (charCode > 255) { 
                encoded += ch; 
            } else { 
                encoded += "%"; 
                encoded += HEX.charAt((charCode >> 4) & 0xF); 
                encoded += HEX.charAt(charCode & 0xF); 
            } 
        } 
    } 
    return encoded; 
}

/**
* left 공백을 제거한다. 
* @param {Object} str - 공백제거할 스트링
*/
function ltrim(str) {
    var s = new String(str);
    if (s.substr(0,1) == " ")
        return ltrim(s.substr(1));
    else
        return s;
}

/**
* right 공백을 제거한다.
* @param {Object} str - 공백제거할 스트링
*/
function rtrim(str) {
    var s = new String(str);
    if(s.substr(s.length-1,1) == " ")
        return rtrim(s.substring(0, s.length-1))
    else
        return s;
}

/**
* 양쪽 공백을 제거한다.
* @param {Object} str - 공백제거할 스트링
*/
function trim(str) {
    return ltrim(rtrim(str));
}

// 팝업 창을 POST로 엽니다.
function goPostPopup(formName, windowName, url, a_title, a_width, a_height) {
    var winl        = (screen.width     - a_width) / 2;
    var wint        = (screen.height    - a_height) / 2;
    var winprops    = 'height='+a_height+',width='+a_width+',top='+wint+',left='+winl+',resizable=no,location=no';

    // 빈 창으로 팝업을 열어 놓습니다.
    //window.name = windowName;
    var wnd= window.open('', a_title, winprops);

    // 폼이 전송될 타겟을 팝업창의 이름으로 지정합니다.
    $(formName).target = a_title;
    $(formName).action = url;
    
    // 폼을 전송합니다.
    $(formName).submit();
}

// 팝업 창을 POST로 엽니다.
function goPostPopup2(formName, windowName, url, a_title, a_width, a_height, winprops) {
	
    var winl    = (screen.width     - a_width) / 2;
    var wint    = (screen.height    - a_height) / 2;
    
    var props   = "";
    props       += "width=";
    props       += a_width;
    props       += ", height=";
    props       += a_height;
    props       += ", top=";
    props       += wint;
    props       += ", left=";
    props       += winl;
    if(winprops != "") {
        props += ", ";
        props += winprops;
    }
    
    // 빈 창으로 팝업을 열어 놓습니다.
    var wnd= window.open('', a_title, props);

    // 폼이 전송될 타겟을 팝업창의 이름으로 지정합니다.
    $(formName).target = a_title;
    $(formName).action = url;
    $(formName).method = "post";
    
    // 폼을 전송합니다.
    $(formName).submit();
    $(formName).target = "";
}

// 닉네임 오버시 오른쪽 메뉴 공통으로 쓰기 위해
function nickNameRightMenu(listNickName, blogUserId, blogUrl, nickSearchYn, actionUrl) {
    var objDivInHtml = "";
    var tempUserId = userId;
    
    objDivInHtml += "<ul class=\"nameCardLayer\">";
    objDivInHtml += "<li class=\"name\">" + listNickName + "</li>";
    
    if(nickSearchYn) {
        if(nickSearchYn == 'Y') {
            objDivInHtml += "<li class=\"first\"><a href=\"javascript:Common.writerSearch('" + listNickName + "', '" + actionUrl + "');\">" + message["board.writer_search"] + "</a></li>";
        }
    }
    if(tempUserId != blogUserId) {
        objDivInHtml += "<li><a href=\"javascript:Common.sendMessagePopup('" + listNickName + "');\">" + message["board.message_send"] + "</a></li>";
        objDivInHtml += "<li><a href=\"javascript:Common.friendLink('" + blogUserId + "', '" + listNickName + "');\">" + message["board.link_request"] + "</a></li>";
    }
     
    objDivInHtml += "<li><a href=\"javascript:openMyNameCard('" + blogUserId + "');\">" + message["board.namecard_view"] + "</a></li>";
    objDivInHtml += "</ul>";
    
    return objDivInHtml;
}

// 닉네임 오버시 오른쪽 메뉴 공통으로 쓰기 위해 - 탈퇴자일 경우 메뉴구성을 다르게
function nickNameRightMenu2(listNickName, blogUserId, blogUrl, nickSearchYn, actionUrl, leaveFlag) {
    var objDivInHtml = "";
    var tempUserId = userId;
    
    objDivInHtml += "<ul class=\"nameCardLayer\">";
    objDivInHtml += "<li class=\"name\">" + listNickName + "</li>";
    
    if(nickSearchYn) {
        if(nickSearchYn == 'Y') {
            objDivInHtml += "<li class=\"first\"><a href=\"javascript:Common.writerSearch('" + listNickName + "', '" + actionUrl + "');\">" + message["board.writer_search"] + "</a></li>";
        }
    }
    if(leaveFlag != 'Y') {
        if(tempUserId != blogUserId) {
            objDivInHtml += "<li><a href=\"javascript:Common.sendMessagePopup('" + listNickName + "');\">" + message["board.message_send"] + "</a></li>";
            objDivInHtml += "<li><a href=\"javascript:Common.friendLink('" + blogUserId + "', '" + listNickName + "');\">" + message["board.link_request"] + "</a></li>";
        }
        
        objDivInHtml += "<li><a href=\"javascript:openMyNameCard('" + blogUserId + "');\">" + message["board.namecard_view"] + "</a></li>";
    }
    objDivInHtml += "</ul>";
    
    return objDivInHtml;
}

// 요약글을 생성한다.
function createSummary(str) {
    var strBody = str.stripTags();
    var strBody2 = strBody.replace(/&nbsp;/g, '').replace(/  /g, '');
    var strBody3 = strBody2.replace(/\r\n/g, '').replace(/\n\r/g, '').replace(/\r/g, '').replace(/\n/g, '');
    var strLen = calculate_msglen(strBody3);
    if(strLen > 100) {
        var cutBody = cutStr(strBody3, 100) + "...";
        return cutBody;
    } else 
        return strBody3;
}

// 글자수를 자른다.
function cutStr(message, maximum) {
    var inc = 0;
    var nbytes = 0;
    var msg = "";
    var msglen = message.length;

    for (i=0; i<msglen; i++) {
        var ch = message.charAt(i);
        if (escape(ch).length > 4) {
            inc = 2;
        } else if (ch == '\n') {
            if (message.charAt(i-1) != '\r') {
                inc = 1;
            }
        } else if (ch == '<' || ch == '>') {
            inc = 4;
        } else {
            inc = 1;
        }
        if ((nbytes + inc) > maximum) {
            break;
        }
        nbytes += inc;
        msg += ch;
    }
    return msg;
}

// FCK Editor에서 '소스'버튼 상태 변경
function ExecuteCommand( commandName )
{
    // Get the editor instance that we want to interact with.
    var oEditor = FCKeditorAPI.GetInstance('body') ;

    // Execute the command.
    oEditor.Commands.GetCommand( commandName ).Execute() ;
}

/**
* 태그 관련 스크립트
**/
var Tag = {
    // 태그 넣기
    add2: function(obj, objTagName) {
        if ($F(objTagName).indexOf(obj.value) < 0) {
            $(objTagName).value += ($F(objTagName) == '' ? '' : 
                                        ($F(objTagName).substring($F(objTagName).length-1) == ',' ? '' : ',')
                                    ) + Tag.getTagValue(obj);
            obj.className = 'tag2';
        } else {
            Common.alertDialog(message["board.alert.tag.duplicate"]);
        }
    },
    
    add: function(obj, objTagName, objValue) {
        if ($F(objTagName).indexOf(objValue) < 0) {
            $(objTagName).value += ($F(objTagName) == '' ? '' : 
                                        ($F(objTagName).substring($F(objTagName).length-1) == ',' ? '' : ',')
                                    ) + objValue;
            obj.className = 'tag2';
        } else {
            Common.alertDialog(message["board.alert.tag.duplicate"]);
        }
    },
    
    set: function(tags) {
        if (tags == null)    return;		// 초기화를 위해 tags가 공백일 경우에도 set 실행 
        $('tagview').getElementsBySelector('*[class="mytag"]').each(function(element) {
            if (tags.indexOf(Tag.getTagValue(element)) > -1)   element.className = 'tag2';
        });
        $('tagview').getElementsBySelector('*[class="tag2"]').each(function(element) {
            if (tags.indexOf(Tag.getTagValue(element)) < 0)    element.className = 'mytag';
        });
    },
    
    // focus가 오는 경우 나의태그보기 show
    show: function(tagview, noticeview) {
        $(tagview).show();
        $(noticeview).show();
    },
    
    // focus가 오는 경우 나의태그보기 show
    toggle: function(tagview, noticeview) {
        $(tagview).toggle();
        $(noticeview).toggle();
    },
    
    // ,,인 경우 ,로 변경 그리고 스페이스처리 (한글이 제대로 처리가 안되서 blur로 변경함)
    keyup: function(objTag) {
        //objTag.value = objTag.value.replace(',,', ',').replace(' ', '');
    },
    
    // ,,인 경우 ,로 변경 그리고 스페이스처리
    blur: function(objTag) {
        objTag.value = objTag.value.replace(/,,/g, ',').replace(/ /g, '');
        // 마지막에 , 가 오는 경우 없애기
        if (objTag.value.substring(objTag.value.length-1, objTag.value.length) == ',')
        	objTag.value = objTag.value.substring(0, objTag.value.length-1);
        // 태그 10개로 제한
        objTag.value = Tag.limit(objTag.value, 10);
        //tagList에서 class변경
        //Tag.set(objTag.value);
    },
    
    // MSIE와 Mozilla의 value값 가져오는 게 다름
    getTagValue: function(obj) {
        if(/MSIE/.test(navigator.userAgent) && !window.opera)
            tag = obj.value;
        else 
            tag = obj.readAttribute('value');
        return tag;
    },
    
    limit: function(tags, len) {
    	if (tags == null)	return "";
    	var arr_tag = tags.split(',');
    	if (arr_tag == null)	return "";
    	var return_tag = "";
    	for(var i=0 ; i<arr_tag.length ; i++) {
    		if (i < len)
	    		return_tag += arr_tag[i] + ',';
    	}
    	if (len < arr_tag.length) {
    		var tmp1 = message["board.alert.tag.limit1"];
    		var tmp2 = message["board.alert.tag.limit2"];
    		alert(tmp1 + len + tmp2);
    	}
   		return return_tag.substring(0, return_tag.length-1);
    }
}

/********************************************************************
*
* 코멘트 글수 세는 함수(다음에서 가져옴 -_-)
*
*
*        <span id="textlimit">0</span>  <- 꼭 필요.
        onkeyup="charLengthCheck(300,'view');"
*
*******************************************************************/
function fnByteChk(aro_name, ari_max, message_id)
{
	var ls_str = aro_name.value; // 이벤트가 일어난 컨트롤의 value 값
	var li_str_len = ls_str.length; // 전체길이

	// 변수초기화
	var li_max = ari_max; // 제한할 글자수 크기
	var i = 0; // for문에 사용
	var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함
	var li_len = 0; // substring하기 위해서 사용
	var ls_one_char = ""; // 한글자씩 검사한다
	var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.

	var ls_trim_number = 0;

	for(i=0; i< li_str_len; i++)
	{
		// 한글자추출
		ls_one_char = ls_str.charAt(i);

		// 한글이면 2를 더한다.
		if (escape(ls_one_char).length > 4)
		{
		 li_byte += 2;
		}
		// 그밗의 경우는 1을 더한다.
		else
		{
		 li_byte++;
		}

		// 전체 크기가 li_max를 넘지않으면
		if(li_byte <= li_max)
		{
		 li_len = i + 1;
		}
		// Length ....................
		if(li_byte < li_max)
		ls_trim_number++;
	}


	// 전체길이를 초과하면
	if(li_byte > li_max)
	{
		if(message_id != undefined)
		{
			alert_module.show('alert', {
				// msg : message['join.kor'] + ' ' + (ari_max / 2) + message['join.char'] + ', ' + message['join.eng'] + ' ' + (ari_max) + message['join.char'] + message[message_id],
				msg : message['board.alert.char.limit1'] + ' ' + ari_max + message['join.input.length.limit'],
				ok_func : function () { ls_str2 = ls_str.substr(0, ls_trim_number); aro_name.value = ls_str2; aro_name.focus(); }
			});			
		}
		else
		{
			ls_str2 = ls_str.substr(0, ls_trim_number); aro_name.value = ls_str2; aro_name.focus();
		}
	}

	return;
}

function fnCharChk(aro_name, ari_max, message_id)
{
	var ls_str = aro_name.value; // 이벤트가 일어난 컨트롤의 value 값
	var li_str_len = ls_str.length; // 전체길이

	// 변수초기화
	var li_max = ari_max; // 제한할 글자수 크기
	var i = 0; // for문에 사용
	var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함
	var li_len = 0; // substring하기 위해서 사용
	var ls_one_char = ""; // 한글자씩 검사한다
	var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.

	var ls_trim_number = 0;

	for(i=0; i< li_str_len; i++)
	{
		// 한글자추출
		ls_one_char = ls_str.charAt(i);

		li_byte++;

		// 전체 크기가 li_max를 넘지않으면
		if(li_byte <= li_max)
		{
		 li_len = i + 1;
		}
		// Length ....................
		if(li_byte < li_max)
		ls_trim_number++;
	}


	// 전체길이를 초과하면
	if(li_byte > li_max)
	{
		if(message_id != undefined)
		{
			alert_module.show('alert', {
				//msg : ari_max + message['join.char'] + message[message_id],
				msg : message['board.alert.char.limit1'] + ' ' + ari_max + message['join.input.length.limit'],
				ok_func : function () { ls_str2 = ls_str.substr(0, ls_trim_number + 1); aro_name.value = ls_str2; aro_name.focus(); }
			});			
		}
		else
		{
			ls_str2 = ls_str.substr(0, ls_trim_number); aro_name.value = ls_str2; aro_name.focus();
		}
	}
	return;
}

function fnByteChk2(aro_name, ari_max, message_id)
{
	var ls_str = aro_name.value; // 이벤트가 일어난 컨트롤의 value 값
	var li_str_len = ls_str.length; // 전체길이

	// 변수초기화
	var li_max = ari_max; // 제한할 글자수 크기
	var i = 0; // for문에 사용
	var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함
	var li_len = 0; // substring하기 위해서 사용
	var ls_one_char = ""; // 한글자씩 검사한다
	var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.

	var ls_trim_number = 0;

	for(i=0; i< li_str_len; i++)
	{
		// 한글자추출
		ls_one_char = ls_str.charAt(i);

		// 한글이면 2를 더한다.
		if (escape(ls_one_char).length > 4)
		{
		 li_byte += 2;
		}
		// 그밗의 경우는 1을 더한다.
		else
		{
		 li_byte++;
		}

		// 전체 크기가 li_max를 넘지않으면
		if(li_byte <= li_max)
		{
		 li_len = i + 1;
		}
		// Length ....................
		if(li_byte < li_max)
		ls_trim_number++;
	}


	// 전체길이를 초과하면
	if(li_byte > li_max)
	{
		if(message_id != undefined)
		{
			alert_module.show('alert', {
				msg : message['join.kor'] + ' ' + (ari_max / 2) + message['join.char'] + ', ' + message['join.eng'] + ' ' + (ari_max) + message['join.char'] + message[message_id],
				//msg : message['board.alert.char.limit1'] + ' ' + ari_max + message['join.input.length.limit'],
				ok_func : function () { ls_str2 = ls_str.substr(0, ls_trim_number); aro_name.value = ls_str2; aro_name.focus(); }
			});			
		}
		else
		{
			ls_str2 = ls_str.substr(0, ls_trim_number); aro_name.value = ls_str2; aro_name.focus();
		}
	}

	return;
}

function fnCharChkChgTx(aro_name, ari_max, message_id, count_obj)
{
	var ls_str = aro_name.value; // 이벤트가 일어난 컨트롤의 value 값
	var li_str_len = ls_str.length; // 전체길이

	// 변수초기화
	var li_max = ari_max; // 제한할 글자수 크기
	var i = 0; // for문에 사용
	var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함
	var li_len = 0; // substring하기 위해서 사용
	var ls_one_char = ""; // 한글자씩 검사한다
	var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.

	var ls_trim_number = 0;

	for(i=0; i< li_str_len; i++)
	{
		// 한글자추출
		ls_one_char = ls_str.charAt(i);

		li_byte++;

		// 전체 크기가 li_max를 넘지않으면
		if(li_byte <= li_max)
		{
		 li_len = i + 1;
		}
		// Length ....................
		if(li_byte < li_max)
		ls_trim_number++;
	}

	$(count_obj).innerHTML = li_byte;

	// 전체길이를 초과하면
	if(li_byte > li_max)
	{
		if(message_id != undefined)
		{
			alert_module.show('alert', {
				msg : ari_max + message['join.char'] + message[message_id],
				ok_func : function () { ls_str2 = ls_str.substr(0, ls_trim_number); aro_name.value = ls_str2; aro_name.focus(); }
			});
		}
		else
		{
			ls_str2 = ls_str.substr(0, ls_trim_number); aro_name.value = ls_str2; aro_name.focus();
		}
	}
	return;
}

function charLengthCheck(length_limit, formName, contentObj, position)
{
    var message_str = $(contentObj).value;
    message_str = message_str.replace(/\r\n$/, "");	// 엔터는 글자 셀 때 +1 시키지 않음 
    var length = calculate_msglen(message_str);
    if($(position)){
    	$(position).innerHTML = length;
    }
    if(length > length_limit)
	{
    	$(contentObj).blur();
        $(contentObj).value = assert_msglen(message_str, length_limit, formName, contentObj, position);
        var alertMsg = "" + message["board.alert.char.limit1"] + length_limit + message["board.alert.char.limit2"];
		alert_module.show('alert', {
   			msg : alertMsg
   		});		        
        //Message.alertDialog(message["board.alert.char.limit1"] + length_limit + message["board.alert.char.limit2"]);
    }
}

function charLengthCheck2(length_limit, formName, contentObj,divName) {
    //alert(document.forms[formName].elements[contentObj].value)
    var message = document.forms[formName].elements[contentObj].value;
    message = message.replace(/\r\n$/, "");	// 엔터는 글자 셀 때 +1 시키지 않음
    var length = calculate_msglen(message);
    //$(divName).innerHTML = length;
    if(length > length_limit) {
    	$(contentObj).blur();
        //alert(message["board.alert.char.limit1"] + length_limit + message["board.alert.char.limit2"]);
        $(contentObj).value = assert_msglen(message, length_limit, formName, contentObj);
        Message.alertDialog(message["board.alert.char.limit1"] + length_limit + message["board.alert.char.limit2"]);
    }
}

function calculate_msglen(message)
{
    var nbytes = 0;
    var i = 0;

    for (i=0; i<message.length; i++) {
        var ch = message.charAt(i);
        if(escape(ch).length > 4) {
            nbytes += 1;
        } else if (ch == '\n') {
            if (message.charAt(i-1) != '\r') {
                nbytes += 1;
            }
        } else if (ch == '<' || ch == '>') {
            nbytes += 1;
        } else {
            nbytes += 1;
        }
    }

    return nbytes;
}
function assert_msglen(message, maximum, formName, contentObj, position)
{
	var tmp_position = 'textlimit';
	if(position != undefined) tmp_position = position;

    var inc = 0;
    var nbytes = 0;
    var msg = "";
    var msglen = message.length;
    var i = 0;

	//alert(message + '\'s length : '+msglen);
    for (i=0; i<msglen; i++) {
    	inc = 0;
        var ch = message.charAt(i);
        if (escape(ch).length > 4) {
            inc = 1;
        } else if (ch == '\n') {
            if (message.charAt(i-1) != '\r') {
                inc = 1;
            }
        } else if (ch == '<' || ch == '>') {
            inc = 1;
        } else {
            inc = 1;
        }
        if ((nbytes + inc) > maximum) {
			//alert(i + ' ? ' + nbytes + ' + ' + inc + ' > ' + maximum + ' '+ msg);
            break;
        }
        nbytes += inc;
        msg += ch;
    }
    
    if($(tmp_position)) $(tmp_position).innerHTML = nbytes;
    //$(tmp_position).innerHTML = nbytes;

    return msg;
}

/**
* 현재 스크롤 좌표
**/
var getNowScroll = function(){ 
	var de = document.documentElement; 
	var b = document.body; 
	var now = {}; 
	
	now.X = document.all ? (!de.scrollLeft ? b.scrollLeft : de.scrollLeft) : (window.pageXOffset ? window.pageXOffset : window.scrollX); 
	now.Y = document.all ? (!de.scrollTop ? b.scrollTop : de.scrollTop) : (window.pageYOffset ? window.pageYOffset : window.scrollY); 
	
	return now; 
}

/**
* 키워드 관련 스크립트
**/
var xxx = 0, yyy = 0;
var Keyword = {
    // 키워드 리스트 보여주기 
    list: function(tid, seq, keyword, event) {
    	var url = "/keyword.do";
        var postData = "cmd=list";
        postData += "&tid=" + tid;
        postData += "&seq=" + seq;
        postData += "&keyword=" + keyword;
        if (event) {
			xxx = Event.pointerX(event);
			yyy = Event.pointerY(event);
		}
		//alert(postData);

        new Ajax.Request(url, {
            method : 'POST',
            postBody : postData,
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
            	Keyword.makeLayer(xmlHttp.responseText);
            },
            onFailure : function(xmlHttp) {
            	Common.alertDialog('fail');
            }
        });
    },
    
    // 키워드 레이어 만들기
	makeLayer: function(html) {
        if ($('contentsKeyword')) {
           	$('contentsKeyword').remove();
        }
        // 직접 넣으면 IE에서 innerHTML 적용이 잘 안되어서 common.jsp에서 createElement로 생성
        element = document.createElement('div');
        element.setAttribute('id', 'contentsKeyword');
        element.setClassName = 'contentsClick';
        element.innerHTML = html;
        $('keywordBody').appendChild(element);
        /**
        paging = html.evalScripts();
        $('keyword_list_paging').innerHTML = paging;
        **/
        Keyword.setLocation($('textId01'), yyy, xxx);
		$('textId01').show();
        //$('keyword_list_paging').innerHTML = html.evalScripts();
	},
	
    // 키워드 레이어 위치 조정하기
	setLocation: function(obj, top, left) {
		//alert(top + ' / ' + left);
		top = top - 210;
		left = left - 220;
	    obj.setStyle({top: top + 'px'});
	    obj.setStyle({left: left + 'px'});
	},
	
    // 키워드 입력하기
	insert: function(formName) {
    	var url = "/keyword.do";
        new Ajax.Request(url, {
            method : 'POST',
            parameters:Form.serialize($(formName)),
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
            	Keyword.makeLayer(xmlHttp.responseText);
            },
            onFailure : function(xmlHttp) {
            	Common.alertDialog('fail');
            }
        });
	},
	
    // 키워드 삭제하기
	del: function(formName, kseq) {
		if (!confirm(message["board.confirm.delete"]))	return;
    	var url = "/keyword.do";
    	$(formName).cmd.value = "delete";
    	$(formName).kseq.value = kseq;
        new Ajax.Request(url, {
            method : 'POST',
            parameters:Form.serialize($(formName)),
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
            	Keyword.makeLayer(xmlHttp.responseText);
            },
            onFailure : function(xmlHttp) {
            	Common.alertDialog('fail');
            }
        });
	},
	
    // 페이징 하기
	page: function(formName, goPage) {
		var url = "/keyword.do";
		$(formName).cmd.value = "list";
		$(formName).page.value = goPage;
        new Ajax.Request(url, {
            method : 'POST',
            parameters:Form.serialize($(formName)),
            encoding : 'UTF-8',
            onSuccess : function(xmlHttp) {
            	Keyword.makeLayer(xmlHttp.responseText);
            },
            onFailure : function(xmlHttp) {
            	Common.alertDialog('fail');
            }
        });
	},
	
    // 키워드 URL 보기
	view: function(link, tid, seq) {
		if (tid == '')
			window.open(link, 'keywordLink');
		else
			location.href = link;
	}
}

// 스크립트 태그 변환 정규식 표현 [s]
function commentTagReplace(str) {
    var regEx1 = /\</ig;
    var regEx2 = /\>/ig;
    //var regEx3 = /\"/ig;
    //str = str.replace(regEx3, "\"");
    var str1 = str.replace(regEx1, "&lt;");
    str1 = str1.replace(regEx2, "&gt;");
    return str1;
}

// 스크립트 태그 변환 정규식 표현 [s]
function bodyTagReplace(str) {

    var regEx3 = /<(script*)>/ig;
    var regEx4 = /<(\/script*)>/ig;
    var str1 = str.replace(regEx3, "&lt;script type=&quot;text/javascript&quot;&gt;");
    str1 = str1.replace(regEx4, "&lt;/script&gt;");

    return str1;
}

// 스크립트 태그 변환 정규식 표현 [s]
function titleTagReplace(str) {
/*
    var regEx1 = /\</ig;
    var regEx2 = /\>/ig;
    var regEx3 = /\"/ig;
    var regEx3 = /<(script*)>/ig;
    var regEx4 = /<(\/script*)>/ig;
    var returnStr = "";
    //returnStr = str.replace(regEx1, "&amp;");
    returnStr = str.replace(regEx2, "&quot;");
    returnStr = returnStr.replace(regEx3, "&lt;script type=&quot;text/javascript&quot;&gt;");
    returnStr = returnStr.replace(regEx4, "&lt;/script&gt;");
    return returnStr;
    str = str.replace(regEx3, "\"");
    str = str.replace(regEx1, "&lt;");
    str = str.replace(regEx2, "&gt;");
*/
    return str;
}

/**
* Ajax로 데이터를 불러올때 로딩중 이미지를 보여준다.
*/
function showAjaxLoadingBox(divElement, ment) {
    if(!document.getElementById('ajaxLoadingBox')) {
        var objDiv = document.createElement("div");
        objDiv.setAttribute("id", "ajaxLoadingBox");
        objDiv.style.position = "absolute";
        objDiv.style.zIndex = 9999;
        
        var objDivMentBox = document.createElement("div");
        objDivMentBox.setAttribute("id", "ajaxBoxMent");
        if (ment == undefined || ment == null || ment == '') {
            objDivMentBox.innerHTML = "Waiting...";
        } else {
            objDivMentBox.innerHTML = ment;
        }
        
        //objDiv.appendChild(objDivMentBox);
        
        var objImg = document.createElement("img");
        objImg.setAttribute("src", "/ysrimg/common/loading.gif");
        
        objDiv.appendChild(objImg);
        
        document.body.appendChild(objDiv);
    }

    var ajaxLoadingBox = $('ajaxLoadingBox');
    
    var pageSize    = WindowUtilities.getPageSize();
    var pageScroll  = WindowUtilities.getWindowScroll();
    
    var loadTop = (pageScroll.top + (pageSize.windowHeight / 2) - 60);
    var loadLeft = (pageScroll.left + (pageSize.windowWidth / 2));
    //var loadLeft = 980 / 2;
    //alert(tempPageSize);
    $('ajaxLoadingBox').setStyle({ 'top': loadTop + 'px', 'left': loadLeft + 'px'});

    Element.show(ajaxLoadingBox);   
}

//제목글에 각종 체크하여 타이틀과 링크 값을 반환
function makeTitleLinkStr(list_item,deleteFg,listOpenFg,choiceFg,strCmtYn,xmlelem,listUserId,userId,adminYn,cg_nm,btype){

	var returnTitle = "";
	var titleHtml = "";
	var oldTableId = "";
/*	
	if(ACTION_URL == "/freeboard.do"){	//자유게시판의 경우 후기게시판과 같이 사용하므로.. -> 자유게시판 독립적으로 가고 후기는 각기 분리하기로 하였음 - 09.06.16 jhg
		if(list_item[i].getElementsByTagName("OLD_TABLE_ID").length > 0){ 
			oldTableId = list_item[i].getElementsByTagName("OLD_TABLE_ID")[0].firstChild.nodeValue;
		}else{
			oldTableId = "";
		}
		if(oldTableId == "108" || oldTableId == "128" || oldTableId == "219"){
			titleHtml += "[" + message["board.title.history"] + "]";
		} 
	}
*/
	//삭제 여부 체크
	if(deleteFg == "X"){
		titleHtml += message["board.alert.delete.withReply.byWriter"];
	}else if(deleteFg == "Z"){
		titleHtml += message["board.alert.delete.withReply.byAdmin"];
	}else if(deleteFg == "N"){
		titleHtml += xmlelem["TITLE"];
	}
	
	//공개여부
	if(listOpenFg == "N" && listUserId != userId && adminYn != 'Y'){
		returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> " + titleHtml;
	}else{
		//공지 아이콘
		if(xmlelem["ALWAY_FG"] != "N"){
			returnTitle += "<img src='/ysrimg/common/ico_notice.gif' alt='notice' /> ";
		}
		//베스트 아이콘
		if(choiceFg == "Y"){
			returnTitle += "<img src='/ysrimg/common/ico_best"+((window.section_color != null) ? ("_"+section_color) : "")+".gif' alt='best' /> ";
		}
		//비공개 아이콘
		if(listOpenFg == "N"){
			returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> ";
		}
		//링크
		returnTitle += "<a href=\"javascript:Board.view('" + ACTION_URL + "?cmd=view&seq="+xmlelem["SEQ"]+"', 'list_form', "+xmlelem["SEQ"]+", 'view', 'post');\">";
		if(cg_nm != "" && cg_nm != undefined && cg_nm != "0"){
			returnTitle += "["+cg_nm+"] ";
		}
		returnTitle += titleHtml;
		returnTitle += "</a>";
		//덧글 수
		if(strCmtYn == "Y" && xmlelem["CMT_CNT"] != "0"){
			returnTitle += " ["+ xmlelem["CMT_CNT"] +"]";
		}
	}
	//동영상 아이콘
	if(btype == "L" && xmlelem["MOVIE_CNT"]){
		var cnt = parseInt(xmlelem["MOVIE_CNT"],10);
		if(cnt > 0){
			returnTitle += " <img src=\"/ysrimg/common/ico_play.gif\" />";
		}
	}
	//새글 아이콘
	if (xmlelem["NEW_FLG"] == "Y"){
		returnTitle += " <img src=\"/ysrimg/board/ico_new.gif\" alt=\"new\" class=\"iconN\" />"
	}

	return returnTitle;
}

//제목글에 각종 체크하여 타이틀과 링크 값을 반환
function makeTitleLinkStr2(list_item, deleteFg, listOpenFg, choiceFg, listCmtCnt, listUserId, listSeq, listTitle, listAlwayFg, userId, adminYn, movieCnt, seq)
{	
	var returnTitle = "";
	var titleHtml = "";
	var oldTableId = "";
/*	
	if(ACTION_URL == "/freeboard.do"){	//자유게시판의 경우 후기게시판과 같이 사용하므로.. -> 자유게시판 독립적으로 가고 후기는 각기 분리하기로 하였음 - 09.06.16 jhg
		if(list_item[i].getElementsByTagName("OLD_TABLE_ID").length > 0){ 
			oldTableId = list_item[i].getElementsByTagName("OLD_TABLE_ID")[0].firstChild.nodeValue;
		}else{
			oldTableId = "";
		}
		if(oldTableId == "108" || oldTableId == "128" || oldTableId == "219"){
			titleHtml += "[" + message["board.title.history"] + "]";
		} 
	}
*/
	//삭제 여부 체크
	if(deleteFg == "X"){
		titleHtml += message["board.alert.delete.withReply.byWriter"];
	}else if(deleteFg == "Z"){
		titleHtml += message["board.alert.delete.withReply.byAdmin"];
	}else if(deleteFg == "N"){
		titleHtml += listTitle;
	}
	
	//공개여부
	if(listOpenFg == "N" && listUserId != userId && adminYn != 'Y'){
		returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> " + titleHtml;
	}else{
		//공지 아이콘
		if(listAlwayFg == "Y"){
			returnTitle += "<img src='/ysrimg/common/ico_notice.gif' alt='notice' /> ";
		}
		//베스트 아이콘
		if(choiceFg == "Y"){
			returnTitle += "<img src='/ysrimg/common/ico_best"+((window.section_color != null) ? ("_"+section_color) : "")+".gif' alt='best' /> ";
		}
		//비공개 아이콘
		if(listOpenFg == "N"){
			returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> ";
		}
		//링크
		returnTitle += "<a href=\"javascript:Board.view('" + ACTION_URL + "?cmd=view&seq="+listSeq+"', 'list_form', "+listSeq+", 'view', 'post');\">";
		if(listSeq == seq){
			returnTitle += "<strong>" +  titleHtml + "</strong>";
		}else{
			returnTitle += titleHtml;
		}
		returnTitle += "</a>";
		//덧글 수
		if(listCmtCnt != "0"){
			returnTitle += " ["+ listCmtCnt +"]";
		}
	}
	//동영상 아이콘
	if(movieCnt){
		var cnt = parseInt(movieCnt,10);
		if(cnt > 0){
			returnTitle += " <img src=\"/ysrimg/common/ico_play.gif\" />";
		}
	}

	return returnTitle;
}

//제목글에 각종 체크하여 타이틀과 링크 값을 반환
function makeTitleLinkStr3(list_item,newFg,deleteFg,listOpenFg,choiceFg,strCmtYn,xmlelem,listUserId,userId,adminYn,cg_nm,btype){
	var returnTitle = "";
	var titleHtml = "";
	var oldTableId = "";

	//카테고리 가져오는 로직 jys(변경 시 확인 요청 바람)
	//if (trim(xmlelem["CATEGORY_NM"]) != "" && trim(xmlelem["CATEGORY_NM"]) != "0"){
	//	titleHtml += "["+trim(xmlelem["CATEGORY_NM"])+"] ";
	//}
	
	//삭제 여부 체크
	if(deleteFg == "X"){
		titleHtml += message["board.alert.delete.withReply.byWriter"];
	}else if(deleteFg == "Z"){
		titleHtml += message["board.alert.delete.withReply.byAdmin"];
	}else if(deleteFg == "N"){
		titleHtml += xmlelem["TITLE"];
	}
	
	//공개여부
	if(listOpenFg == "N" && listUserId != userId && adminYn != 'Y'){
		returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> " + titleHtml;
	}else{
		//공지 아이콘
		if(xmlelem["ALWAY_FG"] != "N"){
			returnTitle += "<img src='/ysrimg/common/ico_notice.gif' alt='notice' /> ";
		}
		//베스트 아이콘
		if(choiceFg == "Y"){
			returnTitle += "<img src='/ysrimg/common/ico_best"+((window.section_color != null) ? ("_"+section_color) : "")+".gif' alt='best' /> ";
		}
		//비공개 아이콘
		if(listOpenFg == "N"){
			returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> ";
		}
		//링크
		returnTitle += "<a href=\"javascript:Board.view('" + ACTION_URL + "?cmd=view&seq="+xmlelem["SEQ"]+"', 'list_form', "+xmlelem["SEQ"]+", 'view', 'post');\">";
		returnTitle += titleHtml;
		returnTitle += "</a>";
		//덧글 수
		if(strCmtYn == "Y" && xmlelem["CMT_CNT"] != "0"){
			returnTitle += " ["+ xmlelem["CMT_CNT"] +"]";
		}
		//새글 아이콘
		if (newFg == "Y"){
			returnTitle += " <img src=\"/ysrimg/board/ico_new.gif\" alt=\"new\" />";
		}
		//동영상 아이콘
		if(btype == "L" && xmlelem["MOVIE_CNT"]){
			var cnt = parseInt(xmlelem["MOVIE_CNT"],10);
			if(cnt > 0){
				returnTitle += " <img src=\"/ysrimg/common/ico_play.gif\" />";
			}
		}		
	}

	return returnTitle;
}

//제목글에 각종 체크하여 타이틀과 링크 값을 반환
function makeTitleLinkStr4(list_item, categoryNM, newFg, deleteFg, listOpenFg, choiceFg, listCmtCnt, listUserId, listSeq, listTitle, listAlwayFg, userId, adminYn, seq){
	var returnTitle = "";
	var titleHtml = "";
	var oldTableId = "";
	
	if (categoryNM != ""){
		titleHtml += "["+categoryNM+"] ";
	}
	
	//삭제 여부 체크
	if(deleteFg == "X"){
		titleHtml += message["board.alert.delete.withReply.byWriter"];
	}else if(deleteFg == "Z"){
		titleHtml += message["board.alert.delete.withReply.byAdmin"];
	}else if(deleteFg == "N"){
		titleHtml += listTitle;
	}
	
	//공개여부
	if(listOpenFg == "N" && listUserId != userId && adminYn != 'Y'){
		returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> " + titleHtml;
	}else{
		//공지 아이콘
		if(listAlwayFg != "N"){
			returnTitle += "<img src='/ysrimg/common/ico_notice.gif' alt='notice' /> ";
		}
		//베스트 아이콘
		if(choiceFg == "Y"){				
			returnTitle += "<img src='/ysrimg/common/ico_best"+((window.section_color != null) ? ("_"+section_color) : "")+".gif' alt='best' /> ";
		}
		//비공개 아이콘
		if(listOpenFg == "N"){
			returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> ";
		}
		//링크
		returnTitle += "<a href=\"javascript:Board.view('" + ACTION_URL + "?cmd=view&seq="+listSeq+"', 'list_form', "+listSeq+", 'view', 'post');\">";
		if(listSeq == seq){
			returnTitle += "<strong>" + titleHtml + "</strong>";
		}else{
			returnTitle += titleHtml;
		}
		returnTitle += "</a>";
		//덧글 수
		if(listCmtCnt != "0"){
			returnTitle += "["+ listCmtCnt +"]";
		}
		//새글 아이콘
		if (newFg == "Y"){
			returnTitle += " <img src=\"/ysrimg/board/ico_new.gif\" alt=\"new\" class=\"iconN\" />";
		}
	}

	return returnTitle;
}

//제목글에 각종 체크하여 타이틀과 링크 값을 반환
function makeTitleLinkStr5(list_item, deleteFg, listOpenFg, choiceFg, listCmtCnt, listUserId, listSeq, listTitle, listAlwayFg, userId, adminYn, movieCnt, seq, examFlg)
{
	var returnTitle = "";
	var titleHtml = "";
	var oldTableId = "";

	//삭제 여부 체크
	if(deleteFg == "X"){
		titleHtml += message["board.alert.delete.withReply.byWriter"];
	}else if(deleteFg == "Z"){
		titleHtml += message["board.alert.delete.withReply.byAdmin"];
	}else if(deleteFg == "N"){
		titleHtml += listTitle;
	}
	
	//공개여부
	if(listOpenFg == "N" && listUserId != userId && adminYn != 'Y'){
		returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> " + titleHtml;
	}else{
		//공지 아이콘
		if(listAlwayFg == "Y"){
			returnTitle += "<img src='/ysrimg/common/ico_notice.gif' alt='notice' /> ";
		}
		//베스트 아이콘
		if(choiceFg == "Y"){
			returnTitle += "<img src='/ysrimg/common/ico_best"+((window.section_color != null) ? ("_"+section_color) : "")+".gif' alt='best' /> ";
		}
		//비공개 아이콘
		if(listOpenFg == "N"){
			returnTitle += "<img src='/images/icon/lock.gif' alt='' class='lock' /> ";
		}
		//링크
		returnTitle += "<a href=\"javascript:Board.view('" + ACTION_URL + "?cmd=view&seq="+listSeq+"', 'list_form', "+listSeq+", 'view', 'post');\">";
		if(listSeq == seq){
			returnTitle += "<strong>" +  titleHtml + "</strong>";
		}else{
			returnTitle += titleHtml;
		}
		returnTitle += "</a>";
		//덧글 수
		if(listCmtCnt != "0"){
			returnTitle += " ["+ listCmtCnt +"]";
		}
		//수료 아이콘
		if(userId != ''){
			if(examFlg == 'Y'){
				returnTitle += "<img src='/ysrimg/common/ico_completion.gif'   alt='" + message['board.study_finish'] + "' class='study' />";
			}else{
				returnTitle += "<img src='/ysrimg/common/ico_incompletion.gif' alt='" + message['board.study_finish'] + "' class='study' />";
			}
		}		
	}

	return returnTitle;
}

//닉네임 앞 레벨아이콘
function levelImgStr(xmlelem){

	// 레벨이미지
	var listMyLevel = xmlelem["MY_LEVEL"];	
	var levelImage = "";
	var levelChk = (xmlelem["USER_ID"] != null && window.LEVEL_CHK != null && window.LEVEL_CHK == "Y");
	
	if (levelChk) {
		if (ARDORMEM.test(xmlelem["USER_ID"])) {
			levelImage = "<img src='/ysrimg/board/ico_level_07.gif'>";
		} else if (ADMINMEM.test(xmlelem["USER_ID"])) {
			levelImage = "<img src='/ysrimg/board/ico_level_06.gif'>";
		} else {
			levelChk = false;
		}
	}
	
	if (!levelChk) {
		if(listMyLevel == ''){
			levelImage = "";
		} else if(listMyLevel=='1' || listMyLevel=='2' ||listMyLevel=='3') {
			levelImage = "<img src='/ysrimg/board/ico_level_01.gif'>";
		} else if(listMyLevel=='4' || listMyLevel=='5' ||listMyLevel=='6') {
			levelImage = "<img src='/ysrimg/board/ico_level_02.gif'>";
		} else if(listMyLevel=='7' || listMyLevel=='8' || listMyLevel=='9') {
			levelImage = "<img src='/ysrimg/board/ico_level_03.gif'>";
		} else if(listMyLevel >= 10 && listMyLevel <= 15 ) {
			levelImage = "<img src='/ysrimg/board/ico_level_04.gif'>";															
		} else {
			levelImage = "<img src='/ysrimg/board/ico_level_05.gif'>";
		}
	}
	return levelImage;
}

//닉네임 앞 레벨아이콘
function levelImgStr2(listMyLevel, userId){
	
	// 레벨이미지
	var listMyLevel = listMyLevel;
	var levelImage  = "";
	var levelChk    = (userId != null && window.LEVEL_CHK != null && window.LEVEL_CHK == "Y");
	
	if (levelChk) {
		if (ARDORMEM.test(userId)) {
			levelImage = "<img src='/ysrimg/board/ico_level_07.gif'>";
		} else if (ADMINMEM.test(userId)) {
			levelImage = "<img src='/ysrimg/board/ico_level_06.gif'>";
		} else {
			levelChk = false;
		}
	}
	
	if (!levelChk) {
		if(listMyLevel == ''){
			levelImage = "";
		} else if(listMyLevel=='1' || listMyLevel=='2' ||listMyLevel=='3') {
			levelImage = "<img src='/ysrimg/board/ico_level_01.gif'>";
		} else if(listMyLevel=='4' || listMyLevel=='5' ||listMyLevel=='6') {
			levelImage = "<img src='/ysrimg/board/ico_level_02.gif'>";
		} else if(listMyLevel=='7' || listMyLevel=='8' || listMyLevel=='9') {
			levelImage = "<img src='/ysrimg/board/ico_level_03.gif'>";
		} else if(listMyLevel >= 10 && listMyLevel <= 15 ) {
			levelImage = "<img src='/ysrimg/board/ico_level_04.gif'>";															
		} else {
			levelImage = "<img src='/ysrimg/board/ico_level_05.gif'>";
		}
	}
	return levelImage;
}

//네임카드
function setNameCardDiv(xmlelem){
	var nameCardHtml = "";
	nameCardHtml += "<div style=\"display:none\" id=\""+ xmlelem["USER_NAME"] + "\">";
	nameCardHtml += "<div class='floatingid'>";
	nameCardHtml += "<div class='userid'>" + xmlelem["NICKNAME"] + "</div>";
	nameCardHtml += "<ul>";
	//nameCardHtml += "<li><a href=\"javascript:Common.writerSearch('"+xmlelem["NICKNAME"]+"', '"+ACTION_URL+"');\">"+message["board.writer_search"]+"</a></li>";
	if(xmlelem["EMAIL_ADDRESS"] != ""){
		if (xmlelem["USER_ID"] != userId) nameCardHtml += "<li><a href=\"javascript:Common.sendMessagePopup('"+xmlelem["NICKNAME"]+"');\">"+message["board.message_send"]+"</a></li>";
		if (xmlelem["USER_ID"] != userId) nameCardHtml += "<li><a href=\"javascript:Common.friendLink('"+xmlelem["USER_ID"]+"', '"+xmlelem["NICKNAME"]+"');\">"+message["board.link_request"]+"</a></li>";
		nameCardHtml += "<li><a href=\"javascript:openMyNameCard('"+xmlelem["USER_ID"]+"');\">"+message["board.namecard_view"]+"</a></li>";
	}
	nameCardHtml += "</ul>";
	nameCardHtml += "<div class=\"floatingid_btm\"></div>";
	nameCardHtml += "</div>";
	nameCardHtml += "</div>";
	return nameCardHtml;
}

//네임카드
function setNameCardDiv2(listUserId, listNickName, listUserName, listLeaveFlg){
	var nameCardHtml = "";
	nameCardHtml += "<div class='floatingid'>";
	nameCardHtml += "<div class='userid'>" + listNickName + "</div>";
	nameCardHtml += "<ul>";
	//nameCardHtml += "<li><a href=\"#\" onclick=\"javascript:Common.writerSearch('"+listNickName+"', '"+ACTION_URL+"'); return false\">"+message["board.writer_search"]+"</a></li>";
	if(listLeaveFlg != ""){
		if (listUserId != userId) nameCardHtml += "<li><a href=\"#\" onclick=\"javascript:Common.sendMessagePopup('"+listNickName+"'); return false\">"+message["board.message_send"]+"</a></li>";
		if (listUserId != userId) nameCardHtml += "<li><a href=\"#\" onclick=\"javascript:Common.friendLink('"+listUserId+"', '"+listNickName+"'); return false\">"+message["board.link_request"]+"</a></li>";
		nameCardHtml += "<li><a href=\"#\" onclick=\"javascript:openMyNameCard('"+listUserId+"'); return false\">"+message["board.namecard_view"]+"</a></li>";
	}
	nameCardHtml += "</ul>";
	nameCardHtml += "<div class=\"floatingid_btm\"></div>";
	nameCardHtml += "</div>";
	return nameCardHtml;
}

//네임카드
function setNameCardDiv3(listUserId, listNickName, listUserName, listLeaveFlg){
	var nameCardHtml = "";
	nameCardHtml += "<div class='floatingid'>";
	nameCardHtml += "<div class='userid'>" + listNickName + "</div>";
	nameCardHtml += "<ul>";
	//nameCardHtml += "<li><a href=\"#\" onclick=\"javascript:Common.writerSearch('"+listNickName+"', '"+ACTION_URL+"'); return false\">"+message["board.writer_search"]+"</a></li>";
	if(listLeaveFlg != ""){
		if (listUserId != userId) nameCardHtml += "<li><a href=\"#\" onclick=\"javascript:Common.sendMessagePopup('"+listNickName+"'); return false\">"+message["board.message_send"]+"</a></li>";
		if (listUserId != userId) nameCardHtml += "<li><a href=\"#\" onclick=\"javascript:Common.friendLink('"+listUserId+"', '"+listNickName+"'); return false\">"+message["board.link_request"]+"</a></li>";
		nameCardHtml += "<li><a href=\"#\" onclick=\"javascript:openMyNameCard('"+listUserId+"'); return false\">"+message["board.namecard_view"]+"</a></li>";
	}
	nameCardHtml += "</ul>";
	nameCardHtml += "<div class=\"floatingid_btm\"></div>";
	nameCardHtml += "</div>";
	return nameCardHtml;
}

//  ================
//>  전역함수 Util   //>
//  ================
if (!window.e_) {
	e_ = function (i) {
        i = document.getElementById(i);
        return i;
    };
}

if (!window.ce_) {
	ce_ = function (i,attr) {
        i = document.createElement(i);

        if (typeof attr === 'object') {
            for (key in attr) {
                if (key === 'class') {
                    i.className   =   attr[key];
                } else if (key === 'style') {
                    i.style.cssText = attr[key];
                } else {
                    i.setAttribute(key, attr[key]);
                }
            }
        }
        return i;
    };
}

if (!window.ct_) {
	ct_ = function (i) {
        i = document.createTextNode(i);
        return i;
    };
}

if (!window.et_) {
	et_ = function (i) {
        return document.getElementsByTagName(i);
    };
}

if (!window.plus_) {
	plus_ = function (p, s) {
        return p.appendChild(s);
    };
}

if (!window.rm_) {
	rm_ = function (o) {
        o.parentNode.removeChild(o);
    };
}

// 주어진 노드의 text 변경.
var replaceText = function (el, text) {
	if (el) {
		clearChilds( el );
		el.appendChild( document.createTextNode( text ) );
	}
};

// 모든 자식노드 삭제
var clearChilds = function (id) {
    if (id) {
        while( id.hasChildNodes() ){
            id.removeChild( id.childNodes[0] );
        }
    }
    
    return id;
};


var addEvent = function (obj, evName, func){
	if (document.addEventListener) {
		obj.addEventListener(evName, func, false);
	} else {
		obj.attachEvent('on'+ evName, func);
	}
};

var stopBubble = function (event) {
    event = event || window.event;
    if (event.stopPropagation) {
        event.stopPropagation();
    } else {
        event.cancelBubble = true;
    }
    return event;
};

var validateEvent	=	function(thisObj, event){

		var	type, target, currentTarget, relatedTarget, IEtarget;

		if ( !window.event && event)	//	FF, Safari, Chrome, Opera
		{
			type			=	event.type;
			target			=	event.target;
			currentTarget	=	event.currentTarget;
			relatedTarget	=	event.relatedTarget;

		}else if (window.event)	//	IE
		{
			event			=	window.event;
			target			=	event.srcElement;
			switch (event.type)
			{
				case 'mouseover':
					IEtarget	=	event.fromElement;
					break;
				case 'mouseout' :
					IEtarget	=	event.toElement;
					break;
			}
		}

		var	compareTarget, result	=	true;
		var	_innerFinder	=	function( nodez ){

			compareTarget	=	null;

			if (!window.event)			//	FF, Safari, Chrome, Opera
			{
				if (currentTarget === relatedTarget)	result	=	false;
				compareTarget	=	relatedTarget;

			} else if (window.event)	//	IE
			{
				if ( IEtarget == thisObj ) result =	false;

				compareTarget	=	IEtarget;

			}

			if (result)
			{
				for (var i = 0 ; i < nodez.childNodes.length ; i++ )
				{
					if (nodez.childNodes[i] == compareTarget) {
						result = false;
						break;
					}

					if(nodez.childNodes[i].hasChildNodes())
						_innerFinder(nodez.childNodes[i]);
				}
			}

		};

		_innerFinder( (!window.event) ? currentTarget : thisObj );

		var evTarget = (IEtarget)? IEtarget : compareTarget;
		return {
			'isOuter' : result,
			'evTarget' : evTarget
		};

};


var modalMaker = function () {

    var modal_dv, content_dv, dv_top, dv_left;
    var USER_OPTION;

    //  IE6 check
    var is_ie6  =   false;
	var appVersion = navigator.appVersion;
	if (/MSIE 8/.test(appVersion))
	{
		is_ie6 = false;
	} else if (/MSIE 7/.test(appVersion))
	{
		is_ie6 = false;
	} else if (/MSIE 6/.test(appVersion))
	{
		is_ie6 = true;
	}

    /*if ( navigator.appVersion.indexOf('MSIE 6.0') > -1 ){
        is_ie6  =   true; window.IS_IE6 = true;
    }*/

    var set_IE6	=	function ( mode ) { //  if IE6, hide all selectboxes in the parent page.

        var value	=	(mode === 'show')? 'visible' : 'hidden';

        var select_s	=	et_('select');
        var s_inModal   =   content_dv.getElementsByTagName('select');
        var doHidden    =   true;

        for ( var i = 0 ; i < select_s.length ; i++ ) {
            doHidden    =   true;

            if (s_inModal.length)
            {
                for (var j=0; j < s_inModal.length; j++)
                {
                    if (s_inModal[j] === select_s[i])
                    {
                        doHidden    =   false;
                        continue;
                    }
                }
            }

            if(doHidden) select_s[i].style.visibility =	value;
        }
    };

    //  resize 시, modal div 를 가운데 위치시킨다.
    var set_modalPos   =   function( type ){
        if (content_dv)
        {
            set_contentPosition(content_dv, type);
            modal_dv.style.width = '100%';
            modal_dv.style.height = get_totalHeight();
            if (type == 'onscroll')
            {
                // 작은 창에서 가로 스크롤 이동하면 배경이 제대로 안먹히는 경우가 있다.
                var docEle = parseInt(document.documentElement.scrollWidth);
                var docBody = parseInt(document.body.scrollWidth);
                var which;
                if (docEle > docBody)
                {
                    which = docEle;
                } else {
                    which = docBody;
                }

                modal_dv.style.width = which + 'px';
            }
        }
    };

    //  scroll 시
    var set_modalSize = function(){
           set_modalPos('onscroll');
    };

       var get_scrollInfo = function () {

           var result = {};
           var	sc_top = 0;
        var sc_left = 0;

        if(document.documentElement.scrollTop){	//	IE strict mode
            sc_top	=	document.documentElement.scrollTop;
            sc_left	=	document.documentElement.scrollLeft;
        }else if(document.body.scrollTop){		//	IE quirks mode
            sc_top	=	document.body.scrollTop;
            sc_left	=	document.body.scrollLeft;
        }else if(window.scrollY){	//	Netscape
            sc_top	=	window.scrollY;
            sc_left	=	window.scrollX;
        }

           result.scrollTop = sc_top;
           result.scrollLeft = sc_left;

           return result;
       };

    //  function for closing modal.
    var closeModal  =   function(){

		if(dv_top){  rm_(dv_top); dv_top = null; }
        if(dv_left){ rm_(dv_left); dv_left = null; }

        if(is_ie6) set_IE6('show');

        content_dv.style.display	=	"none";
        plus_( document.body, content_dv );
        rm_( modal_dv );
    };

    //	스크롤된 현재 영역에 모달이 보이도록 top, left 조절
    var set_contentPosition	=	function(dv, type){

        // onscroll 이벤트시 가운데 정렬일 경우,
        // content div 가 fixed 라면 조정할 필요가 없다.
        if (type == 'onscroll' && dv.style.position == 'fixed')
        {
            return;
        }

        var	sc_top = get_scrollInfo().scrollTop;
        var sc_left = get_scrollInfo().scrollLeft;

        var in_height, in_width;

        if ( window.innerHeight ){
            in_height    =   window.innerHeight;
            in_width     =   window.innerWidth;
        }else{
            //  IE는 innerHeigt 를 지원하지 않기에, 다른 방법을 쓴다.
            var d  =   document.createElement('div');

            if (!dv_top && !dv_left)
            {
                dv_top = plus_( document.body, ce_('div', { 'style' : 'position:absolute; top:100%; left:100px; z-index:1; visibility:hidden;'}) );
                dv_top.style.top = dv_top.offsetTop + 'px';

                dv_left = plus_( document.body, ce_('div', { 'style' : 'position:absolute; top:100px; left:100%; z-index:1; visibility:hidden;'}) );
                dv_left.style.left = dv_left.offsetLeft + 'px';
            }
               //  ===============================================>
               // 중요 onresize 시 dv_top, dv_left 의 % 를 갱신해주면 현재 브라우저에서 보이는
               // 영역의 최단에 붙는다 ^^
               dv_top.style.top = '100%';
               dv_left.style.left = '100%';
			//  ===============================================>

            /*if (!is_ie6)
            {
				in_height = dv_top.offsetTop;
				in_width = dv_left.offsetLeft;
            } else {
				in_height = document.body.clientHeight;
				in_width = document.body.clientWidth;

				//modal_dv.style.width = '100%';
				//modal_dv.style.height = '100%';
			}*/
			in_height = dv_top.offsetTop;
			in_width = dv_left.offsetLeft;

        }

        var sc_width = (dv.style.width)? dv.style.width : dv.scrollWidth;
        //dv.style.width = sc_width;

        var sc_height = (dv.style.height)? dv.style.height : dv.scrollHeight;
        //dv.style.height = sc_height;

        var realTop = '';

        if (dv.style.position !== 'fixed') {        	
        	realTop = sc_top + parseInt( (in_height / 2) - (parseInt(sc_height)/2) ); 
        } else {
        	realTop = parseInt( (in_height / 2) - (parseInt(sc_height)/2) );
        }
		
        if(realTop <= 0) realTop = '20';

        var realLeft = '';
        if (dv.style.position !== 'fixed') {
        	realLeft = sc_left + parseInt( (in_width / 2) - (parseInt(sc_width)/2) ) ;
        } else {
        	realLeft = parseInt( (in_width / 2) - (parseInt(sc_width)/2) ) ;
        }
        if(realLeft <= 0) realLeft = '20';

        dv.style.top = realTop + 'px'; 
        dv.style.left = realLeft + 'px';

    };


    var funzList = [];
    var addFunz = function(f){
        funzList.push(f);
    };

    // 어느 상황에서든, page 의 최대 높이값.
    var get_totalHeight = function(){
        var h = 0;
        if (document.documentElement.scrollHeight < document.documentElement.clientHeight)
        {
            h = document.documentElement.clientHeight;
        } else {
            h = document.documentElement.scrollHeight;
        }      

        return h + 'px';
    };

    var content_dv_setUp = function(dv, boolFixed){
        //  content_dv setup
        var csText = "position: absolute; z-index: 91; top: 0; left: 0; display: block; margin: 0 auto;";
        dv.style.cssText = dv.style.cssText + ';' + csText;
        plus_(document.body, dv);
        
        if (!is_ie6) dv.style.position = 'fixed';

        if (!boolFixed)
            set_contentPosition(dv); //  이곳에 놔야 IE6 가 올바른 값을 인식한다.
    };

    return {
		show : function( id, opt, boolFixed){ 	//	args : (컨텐츠 아이디, 유리판 클릭시 닫기여부, fixed 여부)
            if (this.IS_OPEN)
            {
                return;
            }

            USER_OPTION = opt;
            if (!USER_OPTION)
            {
                USER_OPTION = {};
                USER_OPTION.change_byScroll = true;
            }

            if(funzList.length > 0){
                for ( var i = 0; i < funzList.length ; i++ )
                {
                    funzList[i]();
                }
            }

            if (typeof id == 'string')
            	content_dv = e_(id);
            else if (typeof id == 'object')
            	content_dv = id;

            if( !content_dv ){
                alert(id + '는 존재하지 않는 태그 아이디입니다.');
                return;
            }

            //  modal_dv setup
            modal_dv = plus_(document.body, ce_('div', { style : 'position: absolute; z-index: 90; top:0; left:0; width:100%; background:black;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=30); filter:Alpha(opacity=30); opacity:0.3' }));
            
            modal_dv.style.height = get_totalHeight();
        

            if( opt && opt.mirror_close ) modal_dv.onclick	=	closeModal;

            //  content_dv setup
            content_dv_setUp(content_dv, boolFixed);
	
               //  onresize 이벤트 등록
			addEvent(window, 'resize', function () {
				set_modalPos('onresize');
			});
			addEvent(window, 'scroll', function () {
				set_modalSize();
			});

            this.IS_OPEN = true;	// public

			if (is_ie6)
            {
                set_IE6('hide');
            }
            
            //lost focus
            var inputs = document.getElementsByTagName("input");
            for (var i = 0; i < inputs.length; i++)
            {
            	if (inputs.type != "hidden") inputs[i].blur();
            }
        },

        close	:	function ( ) {
            closeModal();
               this.IS_OPEN = false;	// public
        },

        addFunc :   function (f){
            addFunz(f);
        },

        change_content: function(dv, boolFixed){
            content_dv.style.display = 'none';

            if (typeof dv === 'string')
            {
                dv = e_(dv);
            }

            content_dv = dv;
            content_dv_setUp(content_dv, boolFixed);
        },
        
        center_position: function(dv, type){
        	set_contentPosition(dv, type); 
        } 
    }
};

// 파일 다운로드
function fileDownLoad(url, path, oldname, newname, formName, downName) {
    if(document.getElementById('download_form')) {
        var downFrm = document.getElementById('download_form');
        document.body.removeChild(downFrm);
    }
    if(document.getElementById('download_iframe')) {
        var downFrame = document.getElementById('download_iframe');
        document.body.removeChild(downFrame);
    }

    // IFrame 생성
    var objFrame = document.createElement("iframe");
    objFrame.setAttribute("id", "download_iframe");
    objFrame.setAttribute("name", "download_iframe");
    objFrame.setAttribute("width", "0");
    objFrame.setAttribute("height", "0");
    objFrame.setAttribute("frameborder", "0");
    
    document.body.appendChild(objFrame);


    
    var objForm = document.createElement("form");
    objForm.setAttribute("id", "download_form");
    objForm.setAttribute("name", "download_form");
    objForm.setAttribute("method", "post");
    
    var objIn = document.createElement("input");
    objIn.setAttribute("name", "filename");
    objIn.setAttribute("type", "hidden");
    objIn.setAttribute("value", url);
    objForm.appendChild(objIn);

	//파일다운로드시 원래 이름으로 다운로드 하기 위해 추가
	if(downName){
		var objIn2 = document.createElement("input");
		objIn2.setAttribute("name", "downName");
		objIn2.setAttribute("type", "hidden");
		objIn2.setAttribute("value", downName);
		objForm.appendChild(objIn2);    
    }    
    
    document.body.appendChild(objForm);
    
    $('download_form').action = "/filedownsvl";
    $('download_form').method   = "post";
    $('download_form').submit();
}

window.ysr_modal = modalMaker();
window.ysr_modal2 = modalMaker();

var show_emoticons = function (oj, insertArea) {
	if(user_id == '') {
        alert_module.show('confirm', {
	   	    msg : message["board.alert.login.msg"],
		   	ok_func : function () {
			    location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
				return;
		    },
		   	cancel_func : function () {
		   		return;
		   	}
	   	});
	   	return;
    }
    
	//parent = (typeof parent == 'string')? e_(parent) : parent;
	emo_json.insertArea = insertArea;
	var emo = init_emo();

	var tempX = oj.parentNode.offsetLeft;
	var tempY = oj.parentNode.offsetTop;

	var scrollY = document.documentElement.scrollHeight;
	if (tempX < 0){tempX = 0;}
	if (tempX > 650 ) { tempX = 585; }
	if (tempY < 0){tempY = 0;}
	if (tempY + 240 > scrollY ) { tempY = tempY - 250; }
	
	emo.style.left = tempX + 20 + "px";
	emo.style.top = tempY + "px";
	emo.style.display = 'block';	
	//parent.appendChild(emo);	
};

var init_emo = function () {
	var icons_cont = clearChilds(e_('icons_cont'));
	
	if( myLevel >= 16 )
	{
		change_emo_icons('ultra');
	}
	else if( myLevel >= 10 && myLevel<= 15 )
	{
		change_emo_icons('mania');		
	}
	else if( myLevel >= 7 && myLevel<= 9 )
	{
		change_emo_icons('gosu');		
	}
	else if( myLevel >= 4 && myLevel<= 6 )
	{
		change_emo_icons('jungsu');
	}
	else
	{
		change_emo_icons('chogub');
	}	
	
	var input = e_(emo_json.insertArea);
	store_pos(input);

	return e_('emoticon_div');
};

var store_pos = function (oj) {
	oj.focus();
	
	if (document.selection != null)
	{
		var range = document.selection.createRange();
		var dummy = document.selection.createRange().duplicate();

		dummy.moveToElementText(oj);
		dummy.setEndPoint("EndToEnd", range);
		
		var start = dummy.text.length - range.text.length;
		var end   = start + range.text.length;
		
		oj.setAttribute("selectionStart", start);
		oj.setAttribute("selectionEnd", end);
	}
	else if (oj.selectionStart != null)
	{
		oj.setAttribute("selectionStart", oj.selectionStart);
		oj.setAttribute("selectionEnd", oj.selectionEnd);
	}
	
	oj.blur();
};
	
var change_emo_icons = function (id) {
	switch (id)
	{
		case "ultra":
			if (myLevel < 16) {
				alert_module.show('alert', { msg : message["comment.emoticon.ultra"] + message["comment.emoticon.alert"]});
				return;
			}
			break;
		case "mania":
			if (myLevel < 10) {
				alert_module.show('alert', { msg : message["comment.emoticon.mania"] + message["comment.emoticon.alert"]});
				return;
			}
			break;
		case "gosu":
			if (myLevel < 7) {
				alert_module.show('alert', { msg : message["comment.emoticon.gosu"] + message["comment.emoticon.alert"]});
				return;
			}
			break;
		case "jungsu":
			if (myLevel < 4) {
				alert_module.show('alert', { msg : message["comment.emoticon.jungsu"] + message["comment.emoticon.alert"]});
				return;
			}
			break;
	}

	var show_id = e_(id);
	var children = e_('cursor_cont').childNodes;
	for (var i = 0 ; i < children.length ; i++) {
		if (children[i] == show_id) {
			children[i].className = (i == 0)? 'first on' : 'on';
		} else {
			children[i].className = (i == 0)? 'first' : '';
		}
	}
	
	show_emo_icons(id);
};

var show_emo_icons = function (type) {
	var icons_cont = clearChilds(e_('icons_cont'));
	var show_emo = emo_json[type];
	var li, a, img;
	for (var i = 0 ; i < show_emo.length ; i++) {
		li = icons_cont.appendChild(document.createElement('li'));
		a = li.appendChild(document.createElement('a'));
		a.href = 'javascript:goInsert_emo("'+ show_emo[i].code +'"); e_(emo_json.insertArea).focus();';
		img = a.appendChild(document.createElement('img'));
		img.src = show_emo[i].src;
	}
};

var goInsert_emo = function (code) {
	var input = document.getElementById(emo_json.insertArea);
	var start = input.getAttribute("selectionStart");
	var end   = input.getAttribute("selectionEnd");
	
	input.value = input.value.substring(0,start) + code + input.value.substr(end);
	input.focus();
	close_emo();
};

var close_emo = function (oj) {
	e_('emoticon_div').style.display = 'none';
};

var conv_emo_to_code = function (cont)
{
	if (typeof(cont) == "string" && cont.length > 0)
	{
		var _innerReplace = function(arr)
		{
			for (var i = 0; i < arr.length; i++)
			{
				if (cont.indexOf(arr[i].src > -1))
				{
					var regexp = new RegExp("<img src=\""+arr[i].src+"\" border=\"0\">", "g");
					var code   = arr[i].code;
				
					cont = cont.replace(regexp, code);
				}
			}
		}
		
		_innerReplace(emo_json.ultra);	
		_innerReplace(emo_json.mania);
		_innerReplace(emo_json.gosu);
		_innerReplace(emo_json.jungsu);
		_innerReplace(emo_json.chogub);
		cont = cont.replace(/'/g, "&#39;");
		cont = cont.replace(/<br\/?>/ig, "\n");
	}
	
	return cont;
}

/*
SMS 보내기 창 띄우기
*/
function loadPhone(){
	if(user_id == '') {
        alert_module.show('confirm', {
	   	    msg : message["board.alert.login.msg"],
		   	ok_func : function () {
			    location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
				return;
		    },
		   	cancel_func : function () {
		   		return;
		   	}
	   	});
	   	return;
    }
    if(myLevel > 6 || camLeaderYn == 'Y'){
	    var a_width = 440;
	    var a_height = 580;
	    var winl = (screen.width  - a_width) / 2;
	    var wint = (screen.height - a_height) / 2;
	    window.open('/sms.do?cmd=main', 'sms', 'left='+winl+', top='+wint+', width='+a_width+', height='+a_height+', toolbar=no, location=no, status=no, menubar=no, scrollbars=no, resizable=no');
	} else{
		alert_module.show('alert', {
   			msg : message["comment.emoticon.gosu"] + message["comment.emoticon.alert"]
   		});
   		return;		
	}
}

/*
SMS+PLANNER SMS 보내기 창 띄우기
*/
function loadPlannerPhone(){
	if(user_id == '') {
        alert_module.show('confirm', {
	   	    msg : message["board.alert.login.msg"],
		   	ok_func : function () {
			    location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
				return;
		    },
		   	cancel_func : function () {
		   		return;
		   	}
	   	});
	   	return;
    }
    if(plannerYN == 'Y') {
		var a_width = 240;
	    var a_height = 305;
	    var winl = (screen.width  - a_width) / 2;
	    var wint = (screen.height - a_height) / 2;
	    window.open('/sms.do?cmd=planner', 'planner', 'left='+winl+', top='+wint+', width='+a_width+'px, height='+a_height+'px, toolbar=no, location=no, status=no, menubar=no, scrollbars=no, resizable=no');
	} else{
		alert_module.show('alert', {
   			msg : "파티플래너만 사용할 수 있습니다."
   		});
   		return;
	}
}

/*
20090918 k.h.k : 이벤트용 SMS 보내기 창 띄우기
*/
function loadEventPhone(){
	alert_module.show('alert', {
		msg : message["board.event.end.date"],
		ok_func : function () { }
	});
	return;
//	if(user_id == '') {
//        alert_module.show('confirm', {
//	   	    msg : message["board.alert.login.msg"],
//		   	ok_func : function () {
//			    location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
//				return;
//		    },
//		   	cancel_func : function () {
//		   		return;
//		   	}
//	   	});
//	   	return;
//    }
//    var a_width = 548;
//    var a_height = 504;
//    var winl = (screen.width  - a_width) / 2;
//    var wint = (screen.height - a_height) / 2;
//    window.open('/smsEvent.do?cmd=main', 'smsEvent', 'left='+winl+', top='+wint+', width='+a_width+', height='+a_height+', toolbar=no, location=no, status=no, menubar=no, scrollbars=no, resizable=no');
}

/*
추천 배너 flash 호출
*/
function common_make_flash(url, id, width, height, wmode, flashvars, allowfullscreen)
{				
	var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
	var isIE6  = (navigator.appVersion.indexOf("MSIE 6") != -1) ? true : false;
	
	var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
	var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
	var isFF = (navigator.userAgent.indexOf("Firefox") != -1) ? true : false;
	
	var str = "";
	var obj = "";
	
	if(flashvars != null && flashvars != ''){
		for(prop in flashvars )
		{
			var arg = flashvars[prop];
			str=str+"&"+prop+"="+arg;
		}
	}
	
	var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
	var MMredirectURL = encodeURI(window.location);
    var MMdoctitle = document.title;
	
	var hasRequestedVersion = DetectFlashVer(10, 0, 42);
	
	if(hasRequestedVersion){
		if( isIE && isWin && !isOpera){	  
			obj = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,42,34" width="' + width +'" height="' + height +'" id="' + id +'" align="middle">';
			obj += '<param name="allowScriptAccess" value="always">';
			obj += '<param name="quality" value="high">';
			obj += '<param name="src" value="' + url + '">';
			obj += '<param name="wmode" value="' + wmode + '">';
			obj += '<param name="flashvars" value="' + str + '">';
			obj += '<param name="allowFullScreen" value="' + allowfullscreen + '">';
			obj += '</object>';
		} else { 
			obj = '<embed src="' + url +'" quality="high"  width="' + width +'" height="' + height +'" name="' + id +'" flashvars="'+str+'" align="middle" allowScriptAccess="always" allowFullScreen="' + allowfullscreen + '" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="' + wmode + '">';
		}
	}else{
		if( isIE && !isIE6 && isWin && !isOpera){	  
			obj = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,42,34" width="' + width +'" height="' + height +'" id="' + id +'" align="middle">';
			obj += '<param name="allowScriptAccess" value="always">';
			obj += '<param name="quality" value="high">';
			obj += '<param name="src" value="' + url + '">';
			obj += '<param name="wmode" value="' + wmode + '">';
			obj += '<param name="flashvars" value="' + str + '">';
			obj += '<param name="allowFullScreen" value="' + allowfullscreen + '">';
			obj += '</object>';
		} else { 
			if(!isIE6){
				str = "MMredirectURL="+MMredirectURL+"&MMplayerType=PlugIn&MMdoctitle="+MMdoctitle+"";
	  			obj = '<embed src="http://www.youngsamsung.com/young/menu/playerProductInstall.swf" quality="high"  width="' + width +'" height="' + height +'" name="' + id +'" flashvars="'+str+'" align="middle" allowScriptAccess="always" allowFullScreen="' + allowfullscreen + '" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="' + wmode + '">';
			}else{
				obj = "<div style='width:" + width + "px;height:" + height + "px;'> Flash player 최신버젼이 설치되어야 합니다. <a href=http://www.adobe.com/go/getflash/>최신버젼 받으러 가기</a></div>";
			}
		}
	}
   
   return obj;
}

function common_makeBanner (mid, section_color){
	var colorType = "4";
	if(section_color == 'purple'){
		colorType = "1";
	}else if(section_color == 'red'){
		colorType = "2";
	}else if(section_color == 'orange'){
		colorType = "3";
	}else if(section_color == 'blue'){
		colorType = "0";
	}else{
		colorType = "4";
	}
	var flashvars = {};
	flashvars.xmlUrl = "/combi.do?cmd=ajax_get_banner" + encodeURIComponent("&") + "mid=" + mid;
	flashvars.type = colorType;
	var obj = common_make_flash("/ysrswf/swf/banner.swf","banner","724", "150","transparent",flashvars,"false");
	
	return obj;
}

function clipboard_link_button(link){
	var flashvars = {
		clipboardstr:encodeURIComponent(link),
		clipboardcallbackfunc:"clipboard_link_callback",
		btnimageurl:"/ysrimg/board/btn_copylink.gif"
	};
	var params = {allowscriptaccess:"always", wmode:"transparent"};
	var attributes = {};

	swfobject.embedSWF("/ysrswf/clipboard.swf", "dummy_clipboard_link", "63", "21", "9.0.0", false, flashvars, params, attributes);
}

function clipboard_body_button(){	
	var flashvars = {
		clipboardstr:encodeURIComponent(document.getElementById("bodyCopyArea").innerHTML),
		clipboardcallbackfunc:"clipboard_body_callback",
		btnimageurl:"/ysrimg/board/btn_copycont.gif"
	};
	var params = {allowscriptaccess:"always", wmode:"transparent"};
	var attributes = {};

	swfobject.embedSWF("/ysrswf/clipboard.swf", "dummy_clipboard_body", "76", "21", "9.0.0", false, flashvars, params, attributes);
}

function clipboard_link_callback(e){
	var tid = document.getElementById("view_form").tid.value;
	var seq = document.getElementById("view_form").seq.value;
	var copyType = "Link";
	
	if(trim(tid) != '' && trim(seq) != '' && trim(copyType) != '') {
        var postData = "cmd=update_clipboard_cnt&tid=" + tid + "&seq=" + seq + "&copyType=" + copyType;
        Common.updateClipboardCnt("/combi.do", postData, 'L', tid, seq);
    }
}

function clipboard_body_callback(e){
	var tid = document.getElementById("view_form").tid.value;
	var seq = document.getElementById("view_form").seq.value;
	var copyType = "CONTENTS";
	
	if(trim(tid) != '' && trim(seq) != '' && trim(copyType) != '') {
        var postData = "cmd=update_clipboard_cnt&tid=" + tid + "&seq=" + seq + "&copyType=" + copyType;
        Common.updateClipboardCnt("/combi.do", postData, 'C', tid, seq);
    }
}

var set_imgPositionSize = function (oj) {
	var w = parseInt(oj.scrollWidth);
	var h = parseInt(oj.scrollHeight);
	if (w > 120 || h > 90) {
		if (w > h) {
			oj.style.height = 90 + 'px';
			oj.style.width = (w * 90) / h + 'px';
		} else {
			oj.style.width = 120 + 'px';
			oj.style.height = (120 * h) / w + 'px';
		}
	}
	
	if (w <= 120 && h <= 90) {
		//oj.style.marginTop = Math.floor(parseInt(oj.parentNode.offsetHeight - oj.offsetHeight) / 2)+"px";
		oj.style.marginTop = ((90/2) - (h/2)) + 'px'; 
	}
	
	oj.parentNode.style.visibility = 'visible';
}

var showMainSetLayer = function()
{
	var layer = document.getElementById("set_mainpage");
	
	if (layer != null)
	{
		var cookie  = document.cookie.match(/;?\bmid=(\d+);?/);
		var mid     = (cookie != null) ? cookie[1] : null;	
		var radios  = layer.getElementsByTagName("input");
		var chkflag = false;

		for (var i = 0; i < radios.length; i++)
		{
			if (radios[i].value == mid)
			{
				radios[i].checked = chkflag = true;
			}
			else
			{
				radios[i].checked = false;
			}			
		}
		
		if (chkflag == false) radios[0].checked = true;
		
		ysr_modal.show(layer);
	}
}

var setMainPage = function()
{
	var layer = document.getElementById("set_mainpage");
	
	if (layer != null)
	{
		var radios = layer.getElementsByTagName("input");
		var mid    = null;
		
		for (var i = 0; i < radios.length; i++)
		{
			if (radios[i].checked)
			{
				mid = radios[i].value;
				break;
			}
		}
		
		if (mid != null && mid != "")
		{
			var dt = new Date();
			dt.setFullYear(dt.getFullYear() + 1);
			document.cookie = "mid="+mid+";expires="+dt.toGMTString();
			
			alert_module.show('alert', {
	   			msg : message["setmainpage.result"]
	   		});
	   		
	   		ysr_modal.close();
		}
	}
}

function makeParamUrl(formname)
{
	var name = new Array($(formname).elements.length);
	var value = new Array($(formname).elements.length);
	var j = 0;
	var plain_text="";

	//사용가능한 컨트롤을 배열로 생성한다.
	len = $(formname).elements.length;
	for (i = 0; i < len; i++)
	{
		switch ($(formname).elements[i].type)
		{
			case "button":

			case "reset":

			case "submit":

			  break;
			
			case "radio":

			case "checkbox":

				if($(formname).elements[i].checked == true)
				{
					name[j] = $(formname).elements[i].name;
					value[j] = $(formname).elements[i].value;
					j++;
				}

				break;

			case "select-one":

				name[j] = $(formname).elements[i].name;
				var ind = $(formname).elements[i].selectedIndex;
				if(ind >= 0)
				{
					value[j] = $(formname).elements[i].options[ind].value;
					/*
					if($(formname).elements[i].options[ind].value != '')
						value[j] = $(formname).elements[i].options[ind].value;
					else
						value[j] = $(formname).elements[i].options[ind].text;
						*/
				}
				else
				{
					value[j] = "";
				}
				j++;

				break;

			case "select-multiple":

				name[j] = $(formname).elements[i].name;
				var llen = $(formname).elements[i].options.length;
				var increased = 0;

				for( k = 0; k < llen; k++)
				{
					if($(formname).elements[i].options[k].selected)
					{
						name[j] = $(formname).elements[i].name;
						value[j] = $(formname).elements[i].options[k].value;
						/*
						if($(formname).elements[i].options[k].value != '')
							value[j] = $(formname).elements[i].options[k].value;
						else
							value[j] = $(formname).elements[i].options[k].text;
							*/
						j++;
						increased++;
					}
				}

				if(increased > 0)
				{
					j--;
				}
				else
				{
					value[j] = "";
				}

				j++;

				break;

			default :
				name[j] = $(formname).elements[i].name;
				value[j] = $(formname).elements[i].value;
				j++;
		}
	}

	//QueryString을 조합한다. 
	for (i = 0; i < j; i++)
	{
		//value[i] = fun_replace(value[i],"&","&"); // & --> &로 바꾸어 준다.
		plain_text += name[i]+ "=" + value[i] + "&";
	}

	//마지막에 &를 없애기 위함
	if(plain_text != "")
		plain_text = plain_text.substr(0, plain_text.length -1);

	return plain_text;
}

function fnAlphaDigit(obj, message_id)
{ 
	var alphaDigit = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; 

	for (i = 0;i < obj.value.length; i++)
	{ 
		if (alphaDigit.indexOf(obj.value.substring(i, i + 1)) == -1) 
		{
			alert_module.show('alert', {
				msg : message[message_id],
				ok_func : function () { obj.value = ''; obj.focus(); }
			});
		} 
	}
};

function fnAlphaDigitSp(obj, message_id)
{ 
	if (/^[\w\W\s]*$/.test(obj.value) == false)
	{
		alert_module.show('alert', {
			msg : message[message_id],
			ok_func : function () { obj.value = ''; obj.focus(); }
		});
	}
};

function go_13ang(){
	if(user_id == '') {
           alert_module.show('confirm', {
   			msg : message["board.alert.login.msg"],
	   			ok_func : function () {
					location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
					return;
	   			},
	   			cancel_func : function () {
	   				return;
	   			}
   		});
   		return;
       }
       openMyNameCard(user_id);
}

var breakWord_ListB = function()
{
	supportBreakWord("board_list", {
		searchTag : "a"
	});
}

var breakWord_ListL = function()
{
	supportBreakWord("board_list", {
		searchTag : ["a", "p"]
	});
}

var breakWord_View = function()
{
	supportBreakWord("view_form", {
		searchTag : ["h4", "p"]
	});
}

var breakWord_ViewL = function()
{
	supportBreakWord("board_list", {
		searchTag : ["a", "strong", "p"]
	});
}

var breakWord_ViewC = function()
{
	supportBreakWord("board_cmt_list", {
		searchTag : "p"
	});	
}

function fun_replace(value, aa, bb)
{
	var arr = value.split(aa);
	return arr.join(bb);
}

function fnSetParamUrl(formname, paramUrl)
{
	var form = eval(formname);
	paramUrl =  fun_replace(paramUrl,"&","¤amp;");
	var params=paramUrl.split("&");
	var paramslen = params.length;
	for (var ai=0;ai < paramslen;ai++)
	{
		var param=params[ai].split("=");
		var value='';
		//var name=param[0];
		for (var j=1; j < param.length; j++)
		{
			value += "=" + param[j];
		}

		if(value!='')
		{
			value = value.substring(1);
			value = fun_replace(value,"¤amp;","&");
			var obj = eval('form.elements(\''+param[0]+'\')');
			if(obj!=null)
			{
				var objtype = '';
				if(obj.type!=null) objtype = obj.type;
				else if(obj.length!=null) objtype = obj[0].type;
				else objtype = 'button';
				switch (objtype)
				{
					case "button":
					
					case "reset":

					case "submit":
					
						break;
					
					case "radio":
					
					case "checkbox":

						var objlen = obj.length;
						if(objlen==null)
						{
							if(obj.value==value) obj.checked = true;
						}
						else
						{
							for(var r=0; r < objlen; r++)
							{
								if(obj[r].value==value) obj[r].checked = true;
							}
						}

						break;

					case "select-one":
					
					case "select-multiple":

						var optionslen = obj.options.length;
						if(optionslen==null) break;
						for(var i=0; i < optionslen; i++)
						{
							if(obj.options[i].value==value) obj.options[i].selected = true;
						}

						break;
					
					default :
					
						obj.value = value;
					
				}
			}
		}
	}
}

//달력 UI 추가 :이성진 (2009-07-29)
function opn_cal(param){
   new CalendarFrame.Calendar($(param));
}

/**
 * 속성으로 선택
 */
var selectByAttribute = function(oid, attr, values)
{
	oid    = (oid != null && oid.nodeType == 1) ? oid : document.getElementById(oid);
	attr   = (attr != null && attr.length > 0) ? attr : null;
	values = (values != null) ? ((values.constructor == Array) ? values : [values.toString()]) : null;	

	if (oid != null && attr != null && values != null && oid.hasChildNodes())
	{
		var regexp = new RegExp("(^|\\s+)("+values.toString().replace(",", "|")+")($|\\s+)");

		//자식 노드 탐색
		for (var i = 0; i < oid.childNodes.length; i++)
		{
			var child = oid.childNodes[i];

			if (child.nodeType == 1)
			{
				//자식의 클래스명 수정
				child.className = regexp.test(child[attr]) ? "selected" : "";
			}
		}
	}
}

// 신글생글을 가져오기 위한 Ajax Manager
var NewArticleAjaxManager = {
    
    /**
    * @param mainMenuId
    *        1: Young소식
    *        2: 스펙업
    *        3: 퍼뮤니티
    *        4: 공감블로그...>>> 이넘은 신글생글없네~
    *        5: Talk! 삼성
    */
    loadNewArticle : function(formName, insertArea){ 
        var ajaxUrl = "/combi.do?cmd=ajax_new_article&mainMenuId="+$(formName).mainMenuId.value;
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                // 리스트 HTML을 생성
                NewArticleAjaxManager.createNewArticleListTable(insertArea, xmlHttp.responseXML);
                if($('ajaxLoadingBox')) Element.hide('ajaxLoadingBox');
            },
            onFailure : function(){
                if($('ajaxLoadingBox')) Element.hide('ajaxLoadingBox');
            }
        });
    },
    createNewArticleListTable : function(insertArea,listXml){
        var root            = listXml.documentElement;
        var xml_view        = document.getElementById(insertArea);
        var listHtml = "";

        if(root.hasChildNodes()){
            nds = root.childNodes;
            var list_item = listXml.getElementsByTagName("list");
            for(var i=0;i < list_item.length;i++) {
                var actionUrl    = "";
                var seq          = "";
                var categoryName = "";
                var title        = "";
                var commentCount = "";
                
                if(list_item[i].getElementsByTagName("MENU_ACTION").length > 0) {
                    actionUrl = list_item[i].getElementsByTagName("MENU_ACTION")[0].firstChild.nodeValue;
                } else {
                    actionUrl = "";
                }
                if(list_item[i].getElementsByTagName("SEQ").length > 0) {
                    seq = list_item[i].getElementsByTagName("SEQ")[0].firstChild.nodeValue;
                } else {
                    seq = "";
                }
                if(list_item[i].getElementsByTagName("CATEGORY_NM").length > 0) {
                    categoryName = list_item[i].getElementsByTagName("CATEGORY_NM")[0].firstChild.nodeValue;
                } else {
                    categoryName = "";
                }
                if(list_item[i].getElementsByTagName("TITLE").length > 0) {
                    title = list_item[i].getElementsByTagName("TITLE")[0].firstChild.nodeValue;
                } else {
                    title = "";
                }
                if(list_item[i].getElementsByTagName("CMT_CNT").length > 0) {
                    commentCount = list_item[i].getElementsByTagName("CMT_CNT")[0].firstChild.nodeValue;
                } else {
                    commentCount = "";
                }

                listHtml += "<li>";
                listHtml += "<a href=\""+actionUrl+"?cmd=view&seq="+seq+"\">";
                if(categoryName!=""){
                listHtml += "<strong>["+categoryName+"]</strong>";
                }
                listHtml += " ";
                listHtml += title;
                if(commentCount>0){
                listHtml += " ";
                listHtml += "["+commentCount+"]";
                }
                listHtml += "</a>";
                listHtml += "</li>";
            }
        }
        xml_view.innerHTML = listHtml;
    },
    //2009.08.19 k.h.k : 화면열때마다 카운트 증가시킴.
    pageHit : function() {
		var ajaxUrl = "/combi.do?cmd=ajax_pagehit";
        new Ajax.Request(ajaxUrl, {
			method : 'POST',
			encoding : 'UTF-8',
			onComplete : function(xmlHttp) {
				// do nothing!!
			},
			onFailure : function(){
				// do nothing!!
			}
		});
	}
}

/**
 * 셀렉트박스 토글
 *
 * @param {Boolean} isShow 보임/숨김
 */
var toggleAllSelectBox = function(isShow)
{
	var eles = document.getElementsByTagName("select");
	
	for (var i = 0; i < eles.length; i++)
	{
		eles[i].style.visibility = isShow ? "visible" : "hidden";
	}
}

/**
 * 엘리먼트 교체
 *
 * @param {Object} oidOID  교체될 엘리먼트 또는 아이디
 * @param {Object} newOID  교체할 엘리먼트 또는 아이디
 * @param {String} display 교체 후 newOID 에 적용할 display 스타일
 */
var replaceElement = function(oldOID, newOID, display)
{
	if (oldOID != null && oldOID.nodeType != 1) oldOID = document.getElementById(oldOID);
	if (newOID != null && newOID.nodeType != 1) newOID = document.getElementById(newOID);
	
	if (oldOID != null && newOID != null)
	{
		oldOID.parentNode.replaceChild(newOID, oldOID);
		
		if (display != null) newOID.style.display = display;
	}
}

/**
 * 일괄적 디스플레이 설정
 *
 * @param {Object} oid     대상 엘리먼트 또는 아이디
 * @param (String} display 디스플레이 스타일             [""|"inline]
 * @param {String} method  적용 대상                          ["self"|"sibling"|"child"|"recursive"]
 *
 * @description
 *     method 인자가 "self"      : 자기 자신
 *     method 인자가 "sibling"   : 자신과 같은 레벨
 *     method 인자가 "child"     : 자신과 자식
 *     method 인자가 "recursive" : 자신과 자식 전부
 * 
 */
var setRecursiveDisplay = function(oid, display, method)
{
	if (oid != null && oid.nodeType != 1) oid = document.getElementById(oid);
	
	//display 설정 내부 함수
	var _innerFunction = function(ele)
	{
		for (var i = 0; i < ele.childNodes.length; i++)
		{
			if (ele.childNodes[i].nodeType == 1)
			{
				ele.childNodes[i].style.display = display;
				
				if (method == "recursive")
				{
					_innerFunction(ele.childNodes[i]);
				}
			}
		}
	}
	
	//method 별 분기
	switch (method)
	{
		case "sibling":
			_innerFunction(oid.parentNode);
			break;
			
		case "child":
		case "recursive":
			_innerFunction(oid);
			oid.style.display = display;
			break;

		default:
			oid.style.display = display;
			break;
	}
}

/**
 * 폼의 reset 재정의
 *
 * 파일전송방식이 GET 에서 POST 로 바뀜으로서 폼의 파일관련값들을 저장하기 위한 함수
 * 호출방식이 아닌 프로토타입으로 제작하며, window.onload 에서 적용한다. 
 */
EventHandler.add(window, "onload", function()
{
	for (var i = 0; i < document.forms.length; i++)
	{
		var frm   = document.forms[i]; 

		if (frm.nativeReset == null)
		{
			frm.nativeReset = frm.reset;
			frm.reset = function()
			{
				var call_fun      = (this.call_fun      != null) ? this.call_fun.value      : null;
				var file_path     = (this.file_path     != null) ? this.file_path.value     : null;
				var file_idx      = (this.file_idx      != null) ? this.file_idx.value      : null;
				var thumbnailPath = (this.thumbnailPath != null) ? this.thumbnailPath.value : null;
			
				this.nativeReset();
				
				if (this.call_fun      != null) this.call_fun.value      = call_fun;
				if (this.file_path     != null) this.file_path.value     = file_path;
				if (this.file_idx      != null) this.file_idx.value      = file_idx;
				if (this.thumbnailPath != null) this.thumbnailPath.value = thumbnailPath;
			};
		}
	}
});

// QuickLink 에서 사용하는 자바스크립트모음
var QuickLinkManager = {
    findPos : function (obj){
	    var curleft = curtop = 0;
	    if (obj.offsetParent) {
	        curleft = obj.offsetLeft;
	        curtop = obj.offsetTop;
	        while (obj = obj.offsetParent) {
	            curleft += obj.offsetLeft;
	            curtop += obj.offsetTop;
	        }
	    }
	    return [curleft,curtop];
	},
    // Ajax 로딩이미지 표시하기
    showAjaxLoadingBox : function() {
        var targetDiv = document.getElementById('main_qlink_element_new');
        // 위치계산하기
        if(targetDiv == null || targetDiv == 'undefined'){
            return;
        }
        var temp = QuickLinkManager.findPos(targetDiv);
	    if(!document.getElementById('ajaxLoadingBoxForQuickLink')) {
	        var objDiv = document.createElement("div");
	        objDiv.setAttribute("id", "ajaxLoadingBoxForQuickLink");
	        objDiv.style.left = temp[0] - 40;
            objDiv.style.top = temp[1] - 60;
	        
	        var objImg = document.createElement("img");
	        objImg.setAttribute("src", "/images/icon/loading.gif");
	        objDiv.appendChild(objImg);
	        
	        targetDiv.appendChild(objDiv);
	    }
        var ajaxLoadingBoxForQuickLink = $('ajaxLoadingBoxForQuickLink');
	    Element.show(ajaxLoadingBoxForQuickLink);
    },
    // 친구검색
    searchFriend : function(formName, insertArea, pagingYn){
        // 페이징에서 사용하는것이 아니라면...
        if(pagingYn!='Y'){
            $('frmQuickLinkFriend').docStart.value = "1";
        }
        var vQuery=""; 
        var vQueryText=""; //
        var vWhere = $(formName).sWhere.value;
        var vPrevQuery=""; 
        var vOriQuery="";
        var search = 0;
        var currentQuery = "";
        var lastQueryText = "";
    
        lastQueryText       = $(formName).queryText.value;
        currentQuery        = $(formName).query.value;
    
        if (currentQuery == "") {
             alert("검색어를 입력하세요!");
            return false;
        }
    
        while (currentQuery.charAt(search) == " ") {            
            search = search + 1;
        }
        currentQuery = currentQuery.substring(search, (currentQuery.length));
        search = currentQuery.length -1;
    
        while (currentQuery.charAt(search) == " ") {            
            search = search -1;
        }
        currentQuery = currentQuery.substring(0, search +1 );
    
        currentQuery    =   searchFilter(currentQuery);
        
        $(formName).query.value =   currentQuery;
    
        vQuery = toBlank(currentQuery);
        vOriQuery = currentQuery;
      
        vQueryText = lastQueryText;
        
        if (vWhere == "title"){
            vQuery = "("+ vQuery + "<IN>title)";
        } else if (vWhere == "author"){
            vQuery = "("+ vQuery + "<IN>writer)";
        } else if (vWhere == "contents"){
            vQuery = "("+ vQuery + "<IN>body)";
        }
        
        vPrevQuery = $(formName).prevQuery.value
    
        $(formName).reSearch.value = "N";
        vQueryText = vQuery;
        vPrevQuery = vOriQuery;
    
        $(formName).queryText.value = vQueryText;
        $(formName).prevQuery.value = vPrevQuery;

        QuickLinkManager.showAjaxLoadingBox();
        var ajaxUrl = "/quicklink.do?cmd=ajax_friend_search";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            postBody: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                // 리스트 HTML을 생성
                QuickLinkManager.createFriendSearchListTable(insertArea, xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
        return false;
    },
    // 검색된 친구목록으로 목록을 구성한다.
    createFriendSearchListTable : function(insertArea, listXml){

        var root = listXml.documentElement;
        var xml_view = document.getElementById(insertArea); //innerHTML 영역
        xml_view.innerHTML = "";
        var list_item = listXml.getElementsByTagName("list"); //xml 리스트 데이타
        var nds;
        var listMessageFlag;   // 검색결과가 더 있다는 걸을 나타내기 위하여..
        if(root.hasChildNodes()){
            nds = root.childNodes;
            for(var i = 0; i < list_item.length; i++) {

                var listUserId; // 사용자유니크
                if(list_item[i].getElementsByTagName("USER_ID").length > 0) {
                   listUserId = list_item[i].getElementsByTagName("USER_ID")[0].firstChild.nodeValue;
                } else {
                   listUserId = "";
                }
                
                var listUserName; // 사용자아이디
                if(list_item[i].getElementsByTagName("USER_NAME").length > 0) {
                   listUserName = list_item[i].getElementsByTagName("USER_NAME")[0].firstChild.nodeValue;
                } else {
                   listUserName = "";
                }             
                var listNickName; // 닉네임
                if(list_item[i].getElementsByTagName("NICKNAME")!=null) {
                   if(list_item[i].getElementsByTagName("NICKNAME")[0].firstChild !=null){
                        listNickName = list_item[i].getElementsByTagName("NICKNAME")[0].firstChild.nodeValue;
                   } else {
                    listNickName = listUserName;
                   }
                } else {
                   listNickName = "";
                }            
                var listTotalCount; // 전체수
                if(list_item[i].getElementsByTagName("TOTAL_COUNT").length > 0) {
                   listTotalCount = list_item[i].getElementsByTagName("TOTAL_COUNT")[0].firstChild.nodeValue;
                } else {
                   listTotalCount = "";
                }
                
                var listCurrentPage; // 현재페이지
                if(list_item[i].getElementsByTagName("CURRENT_PAGE").length > 0) {
                   listCurrentPage = list_item[i].getElementsByTagName("CURRENT_PAGE")[0].firstChild.nodeValue;
                } else {
                   listCurrentPage = "";
                }
                
                if(list_item[i].getElementsByTagName("MESSAGE_FLAG").length > 0) {
                   listMessageFlag = list_item[i].getElementsByTagName("MESSAGE_FLAG")[0].firstChild.nodeValue;
                } else {
                   listMessageFlag = "";
                }
                
                // 목록을 담을  ui 생성
                var objToolTipUi = xml_view.appendChild(document.createElement("ul"));
                objToolTipUi.className = "info";

                // 목록을 담을  ui에 들어갈  li 생성
                var objToolTipLi = objToolTipUi.appendChild(document.createElement("li") );
               
                // li에 들어갈 항목 생성 (로그인상태 + 닉네임)
                var objSpan = objToolTipLi.appendChild(document.createElement("span")); 
                objSpan.style.cursor = "pointer";
                var objSpanText = listNickName;
                objSpan.innerHTML = objSpanText;
                objSpan.className = "tooltip html_" + listUserName + "_S";  // 여기 _S랑...맞춰야 툴팁이 나온다고~
                
                // li에 들어갈 항목 생성 (삭제버튼)
                //var objSpan = objToolTipLi.appendChild(document.createElement("span"));
                
                //objText = "<img class=\"last\" width=\"5\" height=\"5\" src=\"/ysrimg/quicklink/li_delete01.gif\"/>";
                
                //objSpan.innerHTML = objText;
            
                // tooltip 메뉴만들기
                var objToolTipDiv2 = objSpan.appendChild(document.createElement("div"));
                objToolTipDiv2.style.display = "none";
                objToolTipDiv2.id = listUserName + "_S";  // 여기 _S랑...맞춰야 툴팁이 나온다고~
                objToolTipDiv2.innerHTML = QuickLinkManager.setFriendSearchToolTipMenu(listUserId, listNickName);
            }
            if(listMessageFlag=="true" && listCurrentPage=="50"){
                var messageDiv = xml_view.appendChild(document.createElement("div"));
                messageDiv.className = "moreFriend";
                messageDiv.innerHTML = "검색결과가 더 있습니다.<br/>정확한 검색 결과를 위해 검색어를 추가해주세요.";
            }
            // 페이징붙이기
            var pagingDiv = xml_view.appendChild(document.createElement("div"));
            pagingDiv.className = "paging";
            pagingDiv.innerHTML = QuickLinkManager.createPagingHtml('QuickLinkManager.pagingFriend', 20, 5, listTotalCount, listCurrentPage);
        } else {
            xml_view.innerHTML = "검색된 사람이 없습니다.";
        }
        
        if(root.hasChildNodes()){
            TooltipManager.init("search_tooltip");
        }
    },
    // 페이징
    pagingFriend : function(currentPage){
        $('frmQuickLinkFriend').docStart.value = (currentPage - 1) * $('frmQuickLinkFriend').docPage.value + 1;
        //$('frmQuickLinkFriend').maxDocs.value = (docStart+1) * $('frmQuickLinkFriend').docPage.value;
        QuickLinkManager.searchFriend('frmQuickLinkFriend','friendSearchArea', 'Y');
    },    
    /**
    * 친구검색에서 사용하는 페이징을 구성해준다
    * @param {Object} scriptMethodName 호출 될 스크립트 명
    * @param {Object} rowLimit 페이지당 보여질 갯수
    * @param {Object} groupLimit 페이징 리스트 수    
    * @param {Object} totalCount 전체 게시물 수
    * @param {Object} currentPage 현재 페이지
    */
    createPagingHtml : function(scriptMethodName, rowLimit, groupLimit, totalCount, currentPage){

        var totalPage =   0;  // 전체 페이지 수
        var startPage   =   0;  // 시작 페이지
        var endPage     =   0;  // 마지막 페이지
        var btnPageList =   0;  // 페이지에 뿌려줄 숫자 리스트
        var totalGroup  =   0;  // 전체 그룹 수 

        // 전체 페이지수를 계산한다.
        totalPage = (Math.floor((Number(totalCount) - 1) / Number(rowLimit))) + 1;
        
        // 시작페이지를 계산한다.
        startPage = (Math.floor((Number(currentPage) - 1) / Number(groupLimit)) * Number(groupLimit)) + 1;
        
        // 마지막 페이지를 계산한다.
        endPage = Number(startPage) + Number(groupLimit) - 1;
        //전체 그룹 수
        totalGroup = Math.floor(totalPage / Number(groupLimit));
        if(totalPage % Number(groupLimit) != 0)
            totalGroup ++;
            
        //현재 그룹 번호
        var currentGrpNo = Math.floor((Number(currentPage) - 1) / Number(groupLimit));
        if (currentGrpNo < 0)
            currentGrpNo = 0;
            currentGrpNo ++;        
    
        // 만약 전체 페이지수가 마지막 페이지 수보다 작으면 전체 페이지 수를 마지막 페이지로 바꿔준다.
        if(totalPage < endPage) {
            endPage = Number(totalPage);
        }
        // 만약 게시판 리스트 수가 0이면 전체 페이지 수도 0으로 만들어준다.
        if(totalCount == 0) {
            totalPage = 0;
        }

        // 페이지 목록
        btnPageList = "";
        var sbPageList = "";
        var j = 0; //초기 first 구분
        
        for (var i = startPage; i <= endPage; i++) {
            j++;
            
            if(currentPage == i) {
                if(j == 1){
                    sbPageList += "<span class='first' title='present'>";
                } else {
                    sbPageList += "<span title='present'>";
                } 
                sbPageList += i;
                sbPageList += "</span>";
            } else {
                if(j == 1){
                    sbPageList += "<a href='#' class='first' onClick=\"" + scriptMethodName + "('";
                } else {
                    sbPageList += "<a href='#' onClick=\"javascript:" + scriptMethodName + "('";
                }
                sbPageList += i;
                sbPageList += "');return false;\" >";
                sbPageList += i;
                sbPageList += "</a>";
            }
        }
        btnPageList = sbPageList;
        
        var nextGroupPage = 0;
        var prevGroupPage = 0;
        
        var btnNextGroup = "";
        var btnPrevGroup = "";
        
        // 그룹 이전
        if(currentPage > 1){
            var sb = "";
            sb += "<a href='#' onClick=\"javascript:" + scriptMethodName + "('";
            sb += 1;
            //sb += "'); return false;\" class='btn'><img src='/ysrimg/btns/btn_firstpage.gif' alt='" + message["board.first"] + "' /></a>";
            sb += "'); return false;\" class='btn'><<</a>";
            btnPrevGroup = sb;
        }else{
            //btnPrevGroup = "<a href='#' onclick='return false;' class='btn'><img src='/ysrimg/btns/btn_firstpage.gif' alt='" + message["board.first"] + "' /></a>";
            btnPrevGroup = "<a href='#' onclick='return false;' class='btn'><<</a>";
        }
        
        var btnPagePrev = "";
        var btnPageNext = "";
        
        // 이전
        if(currentGrpNo > 1){
            prevGroupPage = (currentGrpNo - 1) * groupLimit - groupLimit + 1;
            
            var sb = "";
            sb += "<a href='#' onClick=\"javascript:" + scriptMethodName + "('";
            sb += prevGroupPage;
            //sb += "'); return false;\" class='btn'><img src='/ysrimg/btns/btn_prepage.gif' alt='" + message["board.prev"] + "' /></a>";
            sb += "'); return false;\" class='btn'><</a>";
            btnPagePrev = sb;
        }else{
            //btnPagePrev = "<a href='#' onclick='return false;' class='btn'><img src='/ysrimg/btns/btn_prepage.gif' alt='" + message["board.prev"] + "' /></a>";
            btnPagePrev = "<a href='#' onclick='return false;' class='btn'><</a>";
        }
        
        // 다음
        if(currentGrpNo < totalGroup){
            nextGroupPage = currentGrpNo * groupLimit + 1;
            var sb = "";
            sb += "<a href='#' onClick=\"javascript:" + scriptMethodName + "('";
            sb += nextGroupPage;
            //sb += "'); return false;\" class='btn'><img src='/ysrimg/btns/btn_nextpage.gif' alt='" + message["board.next"] + "' /></a>";
            sb += "'); return false;\" class='btn'>></a>";
            btnPageNext = sb;
        }else{
            //btnPageNext = "<a href='#' onclick='return false;' class='btn'><img src='/ysrimg/btns/btn_nextpage.gif' alt='" + message["board.next"] + "' /></a>";
            btnPageNext = "<a href='#' onclick='return false;' class='btn'>></a>";
        }
        
        //그룹 다음
        if(currentPage < totalPage){
            var sb = "";
            sb += "<a href='#' onClick=\"javascript:" + scriptMethodName + "('";
            sb += totalPage;
            //sb += "'); return false;\" class='btn'><img src='/ysrimg/btns/btn_lastpage.gif' alt='" + message["board.last"] + "' /></a>";
            sb += "'); return false;\" class='btn'>>></a>";
            btnNextGroup = sb;
        }else{
            //btnNextGroup = "<a href='#' onclick='return false;' class='btn'><img src='/ysrimg/btns/btn_lastpage.gif' alt='" + message["board.last"] + "' /></a>";
            btnNextGroup = "<a href='#' onclick='return false;' class='btn'>>></a>";
        }
    
        var pageInfo = "";
        var pageHtml = "";
    
        if(totalCount != '0')
        {
            pageHtml += btnPrevGroup; // 그룹 이전 
            pageHtml += btnPagePrev; // 이전 
            pageHtml += btnPageList; // 페이지 숫자 
            pageHtml += btnPageNext; // 다음 
            pageHtml += btnNextGroup; // 그룹 다음
        } else {
            pageHtml += "&nbsp;";
        }
        return pageHtml;
    },
    // 친구검색에서 사용하는 툴팁메뉴를 구성해준다.
    setFriendSearchToolTipMenu : function (listUserId, listNickName){
        var toolTipMenuHtml = "";
        toolTipMenuHtml += "<div class='floatingid'>";
        toolTipMenuHtml += "<div class='userid'>" + listNickName + "</div>";
        toolTipMenuHtml += "<ul>";
        toolTipMenuHtml += "<li><a href=\"#\" onclick=\"javascript:QuickLinkManager.showMessage('"+listNickName+"'); return false\">"+message["quicklink.send_message"]+"</a></li>";
        toolTipMenuHtml += "<li><a href=\"javascript:QuickLinkManager.showFriendLink('"+listUserId+"', '"+listNickName+"');\">"+message["board.link_request"]+"</a></li>";
        toolTipMenuHtml += "<li><a href=\"javascript:openMyNameCard('"+listUserId+"');\">"+message["board.namecard_view"]+"</a></li>";
        toolTipMenuHtml += "</ul>";
        toolTipMenuHtml += "<div class=\"floatingid_btm\"></div>";
        toolTipMenuHtml += "</div>";
        return toolTipMenuHtml;
    },
    // 친구신청화면을 표시한다.
    showFriendLink : function(listUserId, listNickName){
        // 툴팁없애기
        TooltipManager.close();
        // 화면표시
        showLayer('friendLink');
        // 보여주기위한 설정: 수신자
        $("main_qlink_element_friend_link_nickname").innerHTML = listNickName;
        $("frmQuickLinkFriendLink").user_id_to.value = listUserId;
    },
    // 친구신청을 진행한다.
    sendFriendLink : function(formName,insertArea){
        QuickLinkManager.showAjaxLoadingBox();
        $(formName).message.value = $(formName).friendMessage.value;
        var ajaxUrl = "/quicklink.do?cmd=ajax_friend_link";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            encoding : 'UTF-8',
            postBody: Form.serialize($(formName)),
            onComplete : function(xmlHttp) {
                // 리스트 HTML을 생성
                QuickLinkManager.sendFriendLinkAfter(xmlHttp.responseXML,formName);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 친구신청을 진행한다.
    sendFriendLinkAfter : function(resultXml,formName){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listMessage;
        var listCode;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
            // 결과코드
            if(resultItem[i].getElementsByTagName("CODE").length > 0) {
                listCode = resultItem[i].getElementsByTagName("CODE")[0].firstChild.nodeValue;
            } else {
                listCode = "";
            }
        }
        // 성공했을 경우
        alert_module.show('alert', {
            msg : listMessage,
            ok_func : function () {
                // 데이터초기화
                $(formName).user_id_to.value = "";
                $(formName).message.value = message["quicklink.friend.request_info"];
                $(formName).friendMessage.value = message["quicklink.friend.request_info"];
                showLayer('friendFind');
            }
        });
    },
    // 친구신청취소
    cancelFriendLink : function(formName){
        $(formName).user_id_to.value = "";
        $(formName).message.value = message["quicklink.friend.request_info"];
        $(formName).friendMessage.value = message["quicklink.friend.request_info"];
        hideLayer('main_qlink_element_friend_link');
    },
    // 친구목록을 가져온다.
    loadFriendList : function(insertArea){
        QuickLinkManager.showAjaxLoadingBox();
        var ajaxUrl = "/quicklink.do?cmd=ajax_friend_list";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                // 리스트 HTML을 생성
                QuickLinkManager.createFriendListTable(insertArea, xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 친구목록으로 목록을 구성한다.
    createFriendListTable : function(insertArea, listXml){
        var root = listXml.documentElement;
        var xml_view = document.getElementById(insertArea); //innerHTML 영역
        xml_view.innerHTML="";
        var list_item = listXml.getElementsByTagName("list"); //xml 리스트 데이타
        var nds;
        if(root.hasChildNodes()){
            nds = root.childNodes;
            for(var i = 0; i < list_item.length; i++) {
                             
                var listStatus; // 상태
                if(list_item[i].getElementsByTagName("STATUS").length > 0) {
                   listStatus = list_item[i].getElementsByTagName("STATUS")[0].firstChild.nodeValue;
                } else {
                   listStatus = "";
                }
                
                var listSeq; // 상태
                if(list_item[i].getElementsByTagName("SEQ").length > 0) {
                   listSeq = list_item[i].getElementsByTagName("SEQ")[0].firstChild.nodeValue;
                } else {
                   listSeq = "";
                }
                
                var listLoginYn; // 로그인상태
                if(list_item[i].getElementsByTagName("LOGINFG").length > 0) {
                   listLoginYn = list_item[i].getElementsByTagName("LOGINFG")[0].firstChild.nodeValue;
                } else {
                   listLoginYn = "";
                }
                
                var listUserId; // 사용자유니크
                if(list_item[i].getElementsByTagName("USER_ID").length > 0) {
                   listUserId = list_item[i].getElementsByTagName("USER_ID")[0].firstChild.nodeValue;
                } else {
                   listUserId = "";
                }
                
                var listUserName; // 사용자아이디
                if(list_item[i].getElementsByTagName("USER_NAME").length > 0) {
                   listUserName = list_item[i].getElementsByTagName("USER_NAME")[0].firstChild.nodeValue;
                } else {
                   listUserName = "";
                }
                
                var listNickName; // 닉네임
                if(list_item[i].getElementsByTagName("NICKNAME").length > 0) {
                   listNickName = list_item[i].getElementsByTagName("NICKNAME")[0].firstChild.nodeValue;
                } else {
                   listNickName = "";
                }
                
                var listLeaveFlg; // 이메일의 존재여부로 사용자가 있는지 검사.
                if(list_item[i].getElementsByTagName("EMAIL_ADDRESS").length > 0) {
                   listLeaveFlg = "N"; 
                } else { 
                   listLeaveFlg = "Y"; 
                }
                
                var listPhone; // 핸드폰번호
                if(list_item[i].getElementsByTagName("MOBILE_PHONE").length > 0) {
                   listPhone = list_item[i].getElementsByTagName("MOBILE_PHONE")[0].firstChild.nodeValue;
                } else {
                   listPhone = "";
                }
                
                // 목록을 담을  ui 생성
                var objToolTipUi = xml_view.appendChild(document.createElement("ul"));
                objToolTipUi.className = "info";

                // 목록을 담을  ui에 들어갈  li 생성
                var objToolTipLi = objToolTipUi.appendChild(document.createElement("li") );
                
                // li에 들어갈 항목 생성 (로그인상태 + 닉네임)
                var objSpan = objToolTipLi.appendChild(document.createElement("span")); 
                objSpan.style.cursor = "pointer";
                if(listLoginYn=="Y"){
                    tempClassName = "first";
                } else {
                    tempClassName = "second";
                }
                // 승낙대기일경우
                if(listStatus=="WAIT"){
                    objSpanText = "<a href=\"javascript:QuickLinkManager.showFriendRequest('"+listSeq+"','"+listUserId+"','"+listNickName+"')\">" + listNickName + "</a>";
                } else {
                    objSpanText = listNickName;
                }
                objSpan.innerHTML = objSpanText;
                
                if(listStatus!="WAIT"){
                    objSpan.className = "tooltip html_" + listUserName + "_C" + " " + tempClassName ;
                } else {
                    objSpan.className = tempClassName ;
                }
                // li에 들어갈 항목 생성 (삭제버튼)
                var objSpan = objToolTipLi.appendChild(document.createElement("span"));
                 // 승낙대기일경우
                if(listStatus=="WAIT"){
                    objText = "<a href=\"javascript:QuickLinkManager.showFriendRequest('"+listSeq+"','"+listUserId+"','"+listNickName+"')\">승낙대기</a>";
                } else {
                    objText = "<a href=\"javascript:QuickLinkManager.deleteFriend('"+listSeq+"')\";>"
                    objText += "<img class=\"last\" width=\"5\" height=\"5\" src=\"/ysrimg/quicklink/li_delete01.gif\"/>";
                    objText += "</a>";
                }
                objSpan.innerHTML = objText;
                
                // tooltip 메뉴만들기
                if(listStatus!="WAIT"){
	                var objToolTipDiv2 = objSpan.appendChild(document.createElement("div"));
	                objToolTipDiv2.style.display = "none";
	                objToolTipDiv2.id = listUserName + "_C";
	                objToolTipDiv2.innerHTML = QuickLinkManager.setFriendListToolTipMenu(listUserId, listNickName, listPhone, listLeaveFlg);
                }
            }
        } else {
            xml_view.innerHTML = "친구가 없습니다.";
        }
        
        if(root.hasChildNodes()){
            TooltipManager.init("tooltip");
        }
    },
    // 친구목록에서 사용하는 툴팁메뉴를 구성해준다.
    setFriendListToolTipMenu : function (listUserId, listNickName, listPhone, listLeaveFlg){
        var toolTipMenuHtml = "";
        toolTipMenuHtml += "<div class='floatingid'>";
        toolTipMenuHtml += "<div class='userid'>" + listNickName + "</div>";
        toolTipMenuHtml += "<ul>";
        if(listLeaveFlg != ""){
            if (listUserId != userId) toolTipMenuHtml += "<li><a href=\"javascript:QuickLinkManager.showMessage('"+listNickName+"');\">"+message["quicklink.send_message"]+"</a></li>";
            if (listUserId != userId) toolTipMenuHtml += "<li><a href=\"javascript:QuickLinkManager.showSms('"+listPhone+"', '"+listNickName+"');\">"+message["quicklink.send_sms"]+"</a></li>";
            toolTipMenuHtml += "<li><a href=\"javascript:openMyNameCard('"+listUserId+"');\">"+message["board.namecard_view"]+"</a></li>";
        }
        toolTipMenuHtml += "</ul>";
        toolTipMenuHtml += "<div class=\"floatingid_btm\"></div>";
        toolTipMenuHtml += "</div>";
        return toolTipMenuHtml;
    },
    // 친구목록에서 친구삭제
    deleteFriend : function(seq){
        // confirm
        if(confirm(message["quicklink.friend.delete"])) {
	        QuickLinkManager.showAjaxLoadingBox();
	        var ajaxUrl = "/quicklink.do?cmd=ajax_friend_delete";
	        var postData = "seq="+seq;
	        new Ajax.Request(ajaxUrl, {
	            method : 'POST',
	            postBody: postData,
	            encoding : 'UTF-8',
	            onComplete : function(xmlHttp) {
	                QuickLinkManager.deleteFriendAfter(xmlHttp.responseXML);
	                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
	            },
	            onFailure : function(){
	                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
	            }
	        });
        }
    },
    // 친구목록에서 친구삭제후 처리
    deleteFriendAfter : function(resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listMessage;
        var listCode;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
            // 결과코드
            if(resultItem[i].getElementsByTagName("CODE").length > 0) {
                listCode = resultItem[i].getElementsByTagName("CODE")[0].firstChild.nodeValue;
            } else {
                listCode = "";
            }
        }
        // 성공했을 경우
        alert_module.show('alert', {
            msg : listMessage,
            ok_func : function () {
                // 친구목록 표시하기
                showLayer('friend'); 
            }
        });
    },
    // 친구승낙/거절화면을 표시한다.
    showFriendRequest : function(listSeq, listUserId, listNickName){
        // 툴팁없애기
        TooltipManager.close();
        // 화면표시
        showLayer('friendRequest');
        // 보여주기위한 설정: 수신자
        $("main_qlink_element_friend_request_nickname").innerHTML = listNickName;
        //$("frmQuickLinkFriendRequest").user_id_from.value = listUserId;
        $("frmQuickLinkFriendRequest").seq.value = listSeq;
        
        // 친구신청메시지를 가져온다.
        QuickLinkManager.getFriendRequestMessage('frmQuickLinkFriendRequest',listSeq);
    },
    getFriendRequestMessage : function(formName,seq){
        QuickLinkManager.showAjaxLoadingBox();
        var ajaxUrl = "/quicklink.do?cmd=ajax_friend_request";
        var postData = "seq="+seq;
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            postBody: postData,
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                // 내용을 가져온 후
                QuickLinkManager.getFriendRequestMessageAfter(formName, xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 쪽지보낸후 처리
    getFriendRequestMessageAfter : function(formName, resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listMessage;
        var listCode;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
        }
        $(formName).content.value=listMessage;
    },
    // 친구신청상태변경하기 (승낙,거절)
    changeFriend : function(formName, resultValue){
        QuickLinkManager.showAjaxLoadingBox();
        $(formName).result.value = resultValue;
        var ajaxUrl = "/quicklink.do?cmd=ajax_friend_change";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            postBody: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                QuickLinkManager.changeFriendAfter(xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    //  친구신청상태변경하기 후 처리
    changeFriendAfter : function(resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");
               
        var listMessage;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
        }
        // 성공했을 경우
        alert_module.show('alert', {
            msg : listMessage,
            ok_func : function () {
                // 친구목록 표시하기
                showLayer('friend'); 
            }
        });
    },
    // 친구수 가져오기
    getFriendCnt: function (){
    	QuickLinkManager.showAjaxLoadingBox();
        var ajaxUrl = "/quicklink.do?cmd=ajax_friend_cnt";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                // 친구수갱신
                QuickLinkManager.refreshFriendCnt(xmlHttp.responseXML);
                
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    getFriendCntForPolling: function (){
    	QuickLinkManager.showAjaxLoadingBox();
        var ajaxUrl = "/quicklink.do?cmd=ajax_friend_cnt";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                // 친구수갱신
				QuickLinkManager.refreshFriendCnt(xmlHttp.responseXML);
				if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
	            if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 친구수 갱신
    refreshFriendCnt : function(resultXml){
        var root = resultXml.documentElement;
        var totalCnt;
        var requestCnt;
        var loginCnt;
		
		if(root.getElementsByTagName("TOTAL_CNT").length > 0) {
               totalCnt = root.getElementsByTagName("TOTAL_CNT")[0].firstChild.nodeValue;
           } else {
               totalCnt = "0";
           }
		if(root.getElementsByTagName("REQUEST_CNT").length > 0) {
              requestCnt = root.getElementsByTagName("REQUEST_CNT")[0].firstChild.nodeValue;
           } else {
              requestCnt = "0";
           }
           
		if(root.getElementsByTagName("LOGIN_CNT").length > 0) {
               loginCnt = root.getElementsByTagName("LOGIN_CNT")[0].firstChild.nodeValue;
           } else {
               loginCnt = "0";
           }
        // 플랙스 갱신
        
        refreshQuickLink('friendsCnt', totalCnt + "," + requestCnt + "," +loginCnt);
		
    },
    // 쪽지보내기화면표시
    showMessage : function(listNickName, reSeq){
        // 툴팁없애기
        TooltipManager.close();
        // 화면표시
        showLayer('noteSend');
        // 값설정해주기
        $('message_form').nickName.value = listNickName;
        $('message_form').nickName.readOnly = "true";
        $('message_form').reSeq.value = reSeq;
    },
    // 쪽지목록을 가져온다.
    loadNoteList : function(insertArea){
        QuickLinkManager.showAjaxLoadingBox();
        var ajaxUrl = "/quicklink.do?cmd=ajax_note_list";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                // 리스트 HTML을 생성
                QuickLinkManager.createNoteListTable(insertArea, xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 쪽지목록으로 목록을 구성한다.
    createNoteListTable : function(insertArea, listXml){
        var root = listXml.documentElement;
        var xml_view = document.getElementById(insertArea); //innerHTML 영역
        var list_item = listXml.getElementsByTagName("list"); //xml 리스트 데이타
        var nds;

        xml_view.innerHTML = "";
        
        if(root.hasChildNodes()){
            nds = root.childNodes;
            for(var i = 0; i < list_item.length; i++) {
                var listSeq; // 일련번호
                if(list_item[i].getElementsByTagName("SEQ").length > 0) {
                   listSeq = list_item[i].getElementsByTagName("SEQ")[0].firstChild.nodeValue;
                } else {
                   listSeq = "";
                }
                
                var listUserId; // 받은사람 아이디
                if(list_item[i].getElementsByTagName("USER_ID").length > 0) {
                   listUserId = list_item[i].getElementsByTagName("USER_ID")[0].firstChild.nodeValue;
                } else {
                   listUserId = "";
                }
                
                var listUserName; // 받은사람 닉네임
                if(list_item[i].getElementsByTagName("NICK_NAME").length > 0) {
                   listUserName = list_item[i].getElementsByTagName("NICK_NAME")[0].firstChild.nodeValue;
                } else {
                   listUserName = "";
                }
                
                var listSndNickName; // 보낸사람 닉네임
                if(list_item[i].getElementsByTagName("SND_NICK_NAME").length > 0) {
                   listSndNickName = list_item[i].getElementsByTagName("SND_NICK_NAME")[0].firstChild.nodeValue;
                } else {
                   listSndNickName = "";
                }
                
                var listContent; // 내용
                if(list_item[i].getElementsByTagName("CONTENT").length > 0) {
                   listContent = list_item[i].getElementsByTagName("CONTENT")[0].firstChild.nodeValue;
                } else {
                   listContent = "";
                }
                
                var listReceiveDate; // 받은날짜
                if(list_item[i].getElementsByTagName("REV_DATE").length > 0) {
                   listReceiveDate = list_item[i].getElementsByTagName("REV_DATE")[0].firstChild.nodeValue;
                } else {
                   listReceiveDate = "";
                }
                
                var listReadYn; // 읽은여부
                if(list_item[i].getElementsByTagName("READ_YN").length > 0) {
                   listReadYn = list_item[i].getElementsByTagName("READ_YN")[0].firstChild.nodeValue;
                } else {
                   listReadYn = "";
                }
                
                // li 생성
                var objUl = xml_view.appendChild(document.createElement("ul"));
                var objLi = objUl.appendChild(document.createElement("li"));
                var objP = objLi.appendChild(document.createElement("p"));
                //objP.setAttribute("style", "width:102px;");
                var styleReadYn = "";
                if(listReadYn=="N"){    
                    styleReadYn = " noteRead";
                }
                objP.className = "note1" + styleReadYn;
                
                objP.innerHTML = "<a href=\"javascript:QuickLinkManager.viewNote('"+listSeq+"');\">"+listSndNickName+"</a>";
                var objP = objLi.appendChild(document.createElement("p"));
                objP.innerHTML = listReceiveDate.substring(5,10);
                //objP.setAttribute("style", "width:32px;");
                objP.className = "note2" + styleReadYn;
                var objP = objLi.appendChild(document.createElement("p"));
                //objP.setAttribute("style", "width:20px;");
                objP.className = "note3" + styleReadYn;
                var objText = "<a href=\"javascript:QuickLinkManager.deleteNoteOnList('"+listSeq+"')\";>"
                objText += "<img class=\"last\" width=\"5\" height=\"5\" src=\"/ysrimg/quicklink/li_delete01.gif\"/>";
                objText += "</a>";
                objP.innerHTML = objText;
            }
        }else{
            // 리스트 없을 경우 메시지작성 by kkh 09.12.14
        	xml_view.innerHTML = "<ul><li>쪽지가 없습니다.</li></ul>";
        }
    },
    // 쪽지목록에서 쪽지삭제
    deleteNoteOnList : function(seq){
        QuickLinkManager.showAjaxLoadingBox();
        var ajaxUrl = "/quicklink.do?cmd=ajax_note_delete";
        var postData = "seq="+seq;
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            postBody: postData,
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                QuickLinkManager.deleteNoteOnListAfter(xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 쪽지삭제후 처리
    deleteNoteOnListAfter : function(resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listMessage;
        var listCode;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
            // 결과코드
            if(resultItem[i].getElementsByTagName("CODE").length > 0) {
                listCode = resultItem[i].getElementsByTagName("CODE")[0].firstChild.nodeValue;
            } else {
                listCode = "";
            }
        }
        // 성공했을 경우
        alert_module.show('alert', {
            msg : listMessage,
            ok_func : function () {
                // 쪽지목록 표시하기
                showLayer('noteList'); 
            }
        });
    },
    // 쪽지보기
    viewNote : function(seq){
        // 화면표시
        showLayer('noteView');
        // 쪽지내용 가져오기
        QuickLinkManager.loadNote(seq);
    },
    // 쪽지내용을 가져온다.
    loadNote : function(seq){
        QuickLinkManager.showAjaxLoadingBox();
        var ajaxUrl = "/quicklink.do?cmd=ajax_note_view&seq="+seq;
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                QuickLinkManager.createNoteTable(xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 쪽지내용으로 HTML을 구성한다.
    createNoteTable : function(listXml){
        var root = listXml.documentElement;
        var list_item = listXml.getElementsByTagName("list"); //xml 리스트 데이타
        var nds;
        if(root.hasChildNodes()){
            nds = root.childNodes;
            for(var i = 0; i < list_item.length; i++) {
                var listSeq; // 일련번호
                if(list_item[i].getElementsByTagName("SEQ").length > 0) {
                   listSeq = list_item[i].getElementsByTagName("SEQ")[0].firstChild.nodeValue;
                } else {
                   listSeq = "";
                }
                
                var listUserId; // 보낸사람 아이디
                if(list_item[i].getElementsByTagName("SND_USER_ID").length > 0) {
                   listUserId = list_item[i].getElementsByTagName("SND_USER_ID")[0].firstChild.nodeValue;
                } else {
                   listUserId = "";
                }
                
                var listUserName; // 보낸사람 닉네임
                if(list_item[i].getElementsByTagName("SND_NICK_NAME").length > 0) {
                   listUserName = list_item[i].getElementsByTagName("SND_NICK_NAME")[0].firstChild.nodeValue;
                } else {
                   listUserName = "";
                }
                
                var listContent; // 내용
                if(list_item[i].getElementsByTagName("CONTENT").length > 0) {
                   listContent = list_item[i].getElementsByTagName("CONTENT")[0].firstChild.nodeValue;
                } else {
                   listContent = "";
                }
                
                var listReceiveDate; // 받은날짜
                if(list_item[i].getElementsByTagName("REV_DATE").length > 0) {
                   listReceiveDate = list_item[i].getElementsByTagName("REV_DATE")[0].firstChild.nodeValue;
                } else {
                   listReceiveDate = "";
                }
            }
            // 값설정
            $('main_qlink_element_note_view_seq').value = listSeq;
            $('main_qlink_element_note_view_sender_input').value = listUserName;
            $('main_qlink_element_note_view_sender').innerHTML = listUserName;
            $('main_qlink_element_note_view_content').innerHTML = listContent;
            
            // 쪽지를 읽었다는 표시하기
            QuickLinkManager.showAjaxLoadingBox();
            // 읽지않은 쪽지의 갯수를 가져올 Ajax 실행
            var ajaxUrl = "/quicklink.do?cmd=ajax_note_read";
            var postData = "seq="+listSeq;
            new Ajax.Request(ajaxUrl, {
                method : 'POST',
                postBody: postData,
                encoding : 'UTF-8',
                onComplete : function(xmlHttp) {
                    if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
                },
                onFailure : function(){
                    if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
                }
            });
        }
    },
    // 쪽지읽기 닫기
    closeNoteView : function(){
        showLayer('noteList');
        QuickLinkManager.loadNoteNewCount();
        
    },
    // 읽지않은 쪽지수가져오기.
    loadNoteNewCount : function(){
        QuickLinkManager.showAjaxLoadingBox();
         // 읽지않은 쪽지의 갯수를 가져올 Ajax 실행
         var ajaxUrl = "/quicklink.do?cmd=ajax_note_new";
         new Ajax.Request(ajaxUrl, {
             method : 'POST',
             encoding : 'UTF-8',
             onComplete : function(xmlHttp) {
                 QuickLinkManager.refreshNoteNew(xmlHttp.responseXML);
                 if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
             },
             onFailure : function(){
                 if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
             }
         });
    },
    loadNoteNewCountForPolling : function(){
         // 읽지않은 쪽지의 갯수를 가져올 Ajax 실행
         var ajaxUrl = "/quicklink.do?cmd=ajax_note_new";
         new Ajax.Request(ajaxUrl, {
             method : 'POST',
             encoding : 'UTF-8',
             onComplete : function(xmlHttp) {
                 QuickLinkManager.refreshNoteNew(xmlHttp.responseXML);
                 if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
             },
             onFailure : function(){
	             if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
             }
         });
    },
    // 읽지 않은 쪽지수 업데이트
    refreshNoteNew : function(resultXml){
        var root = resultXml.documentElement;
        var listCount;
  
        if(root.getElementsByTagName("COUNT")[0].firstChild != null) {
            listCount = root.getElementsByTagName("COUNT")[0].firstChild.nodeValue;
        } else {
            listCount = "0";
        }
        // 플랙스 갱신
        refreshQuickLink('noteNewCnt', listCount);
    },
    // 쪽지보내기 취소
    cancelNoteSend : function(formName){
        // form데이터 초기화
        $(formName).nickName.value = ""
        $(formName).nickName.readOnly = false;
        $(formName).content.value = "* 글자수는 400자 이내로 제한됩니다.";
        $(formName).noteContent.value = "* 글자수는 400자 이내로 제한됩니다.";
        // 레이어숨기기
        hideLayer('main_qlink_element_note_send');
    },
    sendCheck : false,
    // 쪽지보내기
    sendNote : function(formName) {
        // 데이터복사
        $(formName).content.value = $(formName).noteContent.value;
        //수신자의 닉네임이 없으면
        if($(formName).nickName.value=='') {
            alert_module.show('alert', {
                msg : message["message.no.receiver"]
            });
            $(formName).nickName.focus();
            return;
        }

        if( $(formName).content.value.stripTags().trim()==''||$(formName).content.value == message["message.content.msg"]) {
            alert_module.show('alert', {
                msg : message["message.no.content"]
            });
            $(formName).content.focus();            
            return;      
        }
        
        if (!QuickLinkManager.sendCheck){
            QuickLinkManager.showAjaxLoadingBox();
            QuickLinkManager.sendCheck = true;
            var ajaxUrl = "/quicklink.do?cmd=ajax_note_send";
            new Ajax.Request(ajaxUrl, {
                method : 'POST',
                postBody: Form.serialize($(formName)),
                encoding : 'UTF-8',
                onComplete : function(xmlHttp) {
                    // 쪽지보낸후처리
                    QuickLinkManager.sendNoteAfter(xmlHttp.responseXML);
                    if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
                },
                onFailure : function(){
                    if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
                }
            });
        }
    },
    // 쪽지보낸후 처리
    sendNoteAfter : function(resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listMessage;
        var listCode;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
            // 결과코드
            if(resultItem[i].getElementsByTagName("CODE").length > 0) {
                listCode = resultItem[i].getElementsByTagName("CODE")[0].firstChild.nodeValue;
            } else {
                listCode = "";
            }
        }
        // 성공했을 경우
        alert_module.show('alert', {
            msg : listMessage,
            ok_func : function () {
                // 중복방지플래그 초기화
                QuickLinkManager.sendCheck = false;
                // 폼데이터 초기화
                $('message_form').nickName.value="";
                $('message_form').nickName.readOnly = false;
                $('message_form').noteContent.value = "* 글자수는 400자 이내로 제한됩니다.";
                // 쪽지목록 표시하기
                //showLayer('noteList');
                // 쪽지보내기창 닫기
                hideLayer('main_qlink_element_note_send');
            }
        });
    },
    // 쪽지답장
    replyNote : function(formName){
        var reSeq = $(formName).main_qlink_element_note_view_seq.value;
        var nickName = $(formName).main_qlink_element_note_view_sender_input.value;
        QuickLinkManager.showMessage(nickName, reSeq);
    },
    // 쪽지저장
    saveNote : function(formName){
        QuickLinkManager.showAjaxLoadingBox();
        // 데이터이동
        $(formName).seq.value = $(formName).main_qlink_element_note_view_seq.value;
        var ajaxUrl = "/quicklink.do?cmd=ajax_note_save";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            postBody: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                QuickLinkManager.saveNoteAfter(formName, xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 쪽지저장후 처리
    saveNoteAfter : function(formName, resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listMessage;
        var listCode;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
            // 결과코드
            if(resultItem[i].getElementsByTagName("CODE").length > 0) {
                listCode = resultItem[i].getElementsByTagName("CODE")[0].firstChild.nodeValue;
            } else {
                listCode = "";
            }
        }
        // 성공했을 경우
        alert_module.show('alert', {
            msg : listMessage,
            ok_func : function () {
                // 데이터초기화
                 $(formName).seq.value = "";
                // 쪽지목록 표시하기
                showLayer('noteList'); 
            }
        });
    },
    // 쪽지삭제
    deleteNote : function(formName){
        QuickLinkManager.showAjaxLoadingBox();
        // 데이터이동
        $(formName).seq.value = $(formName).main_qlink_element_note_view_seq.value;
        var ajaxUrl = "/quicklink.do?cmd=ajax_note_delete";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            postBody: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                QuickLinkManager.deleteNoteAfter(formName, xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 쪽지삭제후 처리
    deleteNoteAfter : function(formName, resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listMessage;
        var listCode;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
            // 결과코드
            if(resultItem[i].getElementsByTagName("CODE").length > 0) {
                listCode = resultItem[i].getElementsByTagName("CODE")[0].firstChild.nodeValue;
            } else {
                listCode = "";
            }
        }
        // 성공했을 경우
        alert_module.show('alert', {
            msg : listMessage,
            ok_func : function () {
                // 데이터초기화
                $(formName).seq.value = "";
                // 쪽지목록 표시하기
                showLayer('noteList'); 
            }
        });
    },
    // 문자보내기화면표시
    showSms : function(listPhone,listNickName){
        // 툴팁없애기
        TooltipManager.close();
        
        showLayer("smsSend");
        
        // 값설정해주기
        if(listPhone!=undefined && listNickName!=undefined){
	        $('frmQuickLinkSmsSend').receiverName.value = listNickName;
	        $('frmQuickLinkSmsSend').receiverPhone.value = listPhone;
	        //$('frmQuickLinkSmsSend').receiverName.readOnly = "true"; >> hidden으로 변경하면서 필요없게 되었음
            $('frmQuickLinkSmsSend').receiverPhone.readOnly = true;
        }
        
        // 보내는사람 전화번호설정하기
        QuickLinkManager.getSmsSender();
    },
    // 문자보내기 취소
    cancelSmsSend : function(formName){
        // form데이터 초기화
        $(formName).sender.value = ""
        $(formName).receiverName.value = "";
        $(formName).receiverPhone.value = "";
        $(formName).receiverPhone.readOnly = false;
        $(formName).smsMessage.value = "* 글자수는 80자 이내로 제한됩니다.";
        // 레이어숨기기
        hideLayer('main_qlink_element_sms_send');
    },
    getSmsSender : function(){
        QuickLinkManager.showAjaxLoadingBox();
        // 보내는사람에 관련된 정보를 가져오기 위한 Ajax
        var ajaxUrl = "/quicklink.do?cmd=ajax_sms_sender";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                QuickLinkManager.getSmsSenderAfter('frmQuickLinkSmsSend', xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    getSmsSenderAfter : function(formName,resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listCapacityCount;
        var listSendCount;
        var listRestCount;
        var listSender;
        for(var i=0;i<resultItem.length;i++) {
            // 문자보내기 가능 수
            if(resultItem[i].getElementsByTagName("CAPACITY_COUNT").length > 0) {
                listCapacityCount = resultItem[i].getElementsByTagName("CAPACITY_COUNT")[0].firstChild.nodeValue;
            } else {
                listCapacityCount = "";
            }
            // 보낸문자수
            if(resultItem[i].getElementsByTagName("SEND_COUNT").length > 0) {
                listSendCount = resultItem[i].getElementsByTagName("SEND_COUNT")[0].firstChild.nodeValue;
            } else {
                listSendCount = "";
            }
            // 남은무료문자수
            if(resultItem[i].getElementsByTagName("REST_COUNT").length > 0) {
                listRestCount = resultItem[i].getElementsByTagName("REST_COUNT")[0].firstChild.nodeValue;
            } else {
                listRestCount = "";
            }
            // 보내는사람 전화번호
            if(resultItem[i].getElementsByTagName("SENDER").length > 0 && resultItem[i].getElementsByTagName("SENDER")[0].firstChild != null ) {
                listSender = resultItem[i].getElementsByTagName("SENDER")[0].firstChild.nodeValue;
            } else {
                listSender = "";
            }
        }
        
        if(listRestCount>0){
            $(formName).sender.value = listSender;
        } else {
            // 성공했을 경우
            alert_module.show('alert', {
                msg : "사용가능한 무료문자가 없습니다.",
                ok_func : function () {
                    hideLayer('main_qlink_element_sms_send'); 
                }
            });
        }
    },
    // 하이픈만들기
    makeHipen : function( inputObj ) {
	    if ( inputObj != null ) {
	        var str = trim( QuickLinkManager.removeHipen( inputObj.value ) );
	        if ( str == "" ) {
	        } else {            
	            var recipient = QuickLinkManager.addHipen( str, true );
	            if ( recipient == "" ) {
	                document.getElementById( inputObj.id ).value = "";
	            } else {
	                document.getElementById( inputObj.id ).value = recipient;   //Firefox버그 때문에 땜빵-inputObj.value = recipient;
	            }
	        }
	    }
	},
	addHipen : function( str, warn ) {
	    var parsed = QuickLinkManager.parseNumber( str );
	    if ( parsed[0] != 0 ) {
	        if(warn) {
	            alert_module.show('alert', {
	                msg : "번호 형식이 잘못되었습니다."
	            });
	        }
	        return "";
	    }
	    
	    var num1 = parsed[1];
	    var num2 = parsed[2];
	    var num3 = parsed[3];
	    var hasStar = parsed[4];
	    var has200 = parsed[5];
	    var num = num1 + num2 + num3;
	    var len = num.length;
	    
	    return has200 + num1 + "-" + num2 + "-" + num3 + hasStar;   
	},
	parseNumber : function( str ) {
	    var result = new Array(6);
	    
	    var len = str.length;
	    var hasStar = "";
	    var has200 = "";
	    var num = str;
	    var num1, num2, num3;
	    var errorCode = 0;
	    
	    if ( str.substring(len-1) == "*") {
	        hasStar = "*";
	        num = str.substring(0,len-1);
	        len = num.length;
	    } else if ( str.substring(0,3) == "200") {
	        has200 = "200-";
	        num = str.substring(3);
	        len = num.length;
	    }
	    
	    if ( len < 10 || len>11) {
	        errorCode = 1;
	    } else {
	        num1 = num.substring(0,3);
	        num2 = num.substring(3,len-4 );
	        num3 = num.substring(len-4,len );   
	
	        if ( num1 != "010" && num1 != "011" && num1 != "016" && num1 != "017" && num1 != "018" && num1 != "019" ) {
	            errorCode = 2;
	        } else {
	            for (var i=3; i<len; i++) {
	                var ch = num.charAt(i);
	                if ( ch < '0' || ch > '9' ) {
	                    errorCode = 3;
	                    break;
	                }
	            }       
	        }
	    }
	    
	    result[0] = errorCode;
	    result[1] = num1;
	    result[2] = num2;
	    result[3] = num3;
	    result[4] = hasStar;
	    result[5] = has200;
	    
	    return result;
	},
	// 입력하려고 포커스를 받았을 경우 호출
	onFocusPhone: function ( inputObj ) {
	    orgNumber = QuickLinkManager.removeHipen( inputObj.value );
	    inputObj.value = orgNumber;
	},
	// 하이픈 제거
	removeHipen : function (val){
	    var newVal = "";
	    for(rhI = 0; rhI<val.length;rhI++){
	        if(!(val.charAt(rhI)=="-")) newVal = newVal + val.charAt(rhI);
	    }
	    return newVal;
	},
    // 문자보내기 실행 
    sendSms : function(formName){
        QuickLinkManager.showAjaxLoadingBox();
        
        // 발신번호, 수신번호, 발신내용 널처리 by kkh (09.12.14)
        if($(formName).sender.value == null || $(formName).sender.value == ""){
	        if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
        	alert_module.show('alert', {
                msg : message["quicklink.sms.no_sender"]
            });
            return;
        }
        
        if($(formName).receiverPhone.value == null || $(formName).receiverPhone.value == ""){
        	if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
        	alert_module.show('alert', {
                msg : message["quicklink.sms.no_receiver"] 
            });
            return;
        }	
        
        if($(formName).smsMessage.value == null || $(formName).smsMessage.value == "" ||
        	 $(formName).smsMessage.value == message["quicklink.sms.limit"] ){
        	if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
        	alert_module.show('alert', {
                msg : message["quicklink.sms.no_msg"] 
            });
            return;
        }	
        
        
        var ajaxUrl = "/quicklink.do?cmd=ajax_sms_send";
        new Ajax.Request(ajaxUrl, {
            method : 'POST',
            postBody: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                // 리스트 HTML을 생성
                QuickLinkManager.sendSmsAfter(xmlHttp.responseXML);
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            },
            onFailure : function(){
                if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 문자보내기 실행 후
    sendSmsAfter: function(resultXml){
        var root = resultXml.documentElement;
        var resultItem = resultXml.getElementsByTagName("RESULT");        
        var listMessage;
        var listCode;
        var listRestCount;
        for(var i=0;i<resultItem.length;i++) {
            // 결과메시지
            if(resultItem[i].getElementsByTagName("MESSAGE").length > 0) {
                listMessage = resultItem[i].getElementsByTagName("MESSAGE")[0].firstChild.nodeValue;
            } else {
                listMessage = "";
            }
            // 결과코드
            if(resultItem[i].getElementsByTagName("CODE").length > 0) {
                listCode = resultItem[i].getElementsByTagName("CODE")[0].firstChild.nodeValue;
            } else {
                listCode = "";
            }
            // 남은무료문자수
            if(resultItem[i].getElementsByTagName("REST_COUNT").length > 0) {
                listRestCount = resultItem[i].getElementsByTagName("REST_COUNT")[0].firstChild.nodeValue;
            } else {
                listRestCount = "";
            }
        }
        
        // 메시지표시
        alert_module.show('alert', {
            msg : listMessage,
            ok_func : function () {
                // 플랙스갱신
                
                hideLayer('main_qlink_element_sms_send');
                refreshQuickLink('smsRestCount', listRestCount);
            }
        });
        
        
    
    },
    charLengthCheck : function(length_limit, formName, contentObj, countArea) {
        var message = document.forms[formName].elements[contentObj].value;
        message = message.replace(/\r\n$/, "");
        var length = QuickLinkManager.calculate_msglen(message);

        $(countArea).innerHTML = length;
        if(length > length_limit) {
            $(contentObj).blur();
            $(contentObj).value = QuickLinkManager.assert_msglen(message, length_limit, formName, contentObj);
            if(length_limit>80){
	            textMsg = "400바이트 이상 전송하실 수 없습니다.<br/> 초과된 부분은 자동 삭제 됩니다.";
	        } else {
	            textMsg = "80바이트 이상 전송하실 수 없습니다.<br/> 초과된 부분은 자동 삭제 됩니다.";
	        }
            alert_module.show('alert', {
                msg : textMsg,
	            ok_func : function () {
	                var length = QuickLinkManager.calculate_msglen($(contentObj).value);
			        
			        $(countArea).innerHTML = length;
	            }
            });
            return false;
        }
        
        return true;
    },
    calculate_msglen : function(message){
        var tmpStr;
	    var temp=0;
	    var onechar;
	    var tcount;
	    tcount = 0;
	
	    tmpStr = new String(message);
	    temp = tmpStr.length;
	    
	    for (k=0;k<temp;k++)
	    {
	        onechar = tmpStr.charAt(k);
	        if (escape(onechar) =='%0D') { } else if (escape(onechar).length > 4) { tcount += 2; } else { tcount++; }
	    }
    
        return tcount;
    },
    assert_msglen : function(message, length_limit, formName, contentObj){
	    var tmpStr;
	    var temp=0;
	    var onechar;
	    var tcount;
	    tcount = 0;
	
	    tmpStr = new String(message);
	    temp = tmpStr.length;
	
	    for(k=0;k < temp;k++)
	    {
	        onechar = tmpStr.charAt(k);
	
	        if(escape(onechar).length > 4) {
	            tcount += 2;
	        } else {
	            // 엔터값이 들어왔을때 값(\r\n)이 두번실행되는데 첫번째 값(\n)이 들어왔을때 tcount를 증가시키지 않는다.
	            if(escape(onechar)=='%0A') {
	            } else {
	                tcount++;
	            }
	        }
	
	        if(tcount > length_limit) {
	            tmpStr = tmpStr.substring(0,k);
	            break;
	        }
	
	    }
	    return tmpStr;
    },
    // 덧글 목록 갯수 가져오기
    loadReplyListCount : function(formName) {
    
    	$(formName).cmd.value ='ajax_listcount';
    	var URL = '/quicklink.do';
        new Ajax.Request(URL, {
            method : 'POST',
            parameters: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
            
				var root = xmlHttp.responseXML.documentElement;
		        var cnt = root.getElementsByTagName("CNT")[0].firstChild.nodeValue;
		        refreshQuickLink("replyCnt", cnt);
		        
            },
            onFailure : function(){
            }
        });
    },
    loadReplyListCountForPolling : function() {
    
    	var URL = '/quicklink.do?cmd=ajax_listcount';
        new Ajax.Request(URL, {
            method : 'POST',
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
            	if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
				var root = xmlHttp.responseXML.documentElement;
		        var cnt = root.getElementsByTagName("CNT")[0].firstChild.nodeValue;
		        refreshQuickLink("replyCnt", cnt);
		        
            },
            onFailure : function(){
            	if($('ajaxLoadingBoxForQuickLink')) Element.hide('ajaxLoadingBoxForQuickLink');
            }
        });
    },
    // 덧글 목록 가져오기
    loadReplyList : function(element, formName) {
    	var URL = '/quicklink.do';

    	$(formName).cmd.value ='ajax_list';
		$(element).innerHTML = "loading....";    	
    	
    	
    	
        new Ajax.Request(URL, {
            method : 'POST',
            parameters: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
                QuickLinkManager.createReplyList(element, xmlHttp.responseXML);
                
            },
            onFailure : function(){
            }
        });
    },
    // 덧글 보기 여부 업데이트 하기 
    updateReplyOpenYn : function(tableId, seq, formName) {
    
    	$(formName).cmd.value = "ajax_updateopenyn";
    	$(formName).tableId.value = tableId;
    	$(formName).seq.value = seq;
		var URL = '/quicklink.do';

        new Ajax.Request(URL, {
            method : 'POST',
            parameters: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
            	QuickLinkManager.loadReplyListCount('reply_list_form');
            },
            onFailure : function(){
            	QuickLinkManager.loadReplyListCount('reply_list_form');
            }
        });
    },
    // 덧글 목록 만들기
    createReplyList: function(element, listXml){
	
		var root = listXml.documentElement;
		var xml_view = document.getElementById(element);
		
	    xml_view.innerHTML = "";
	    
	    if(root.hasChildNodes()){
	        nds = root.childNodes;
	        var list_item = listXml.getElementsByTagName("list");
	        
	        var isBoard = "";
	        var title = "";
	        var cnt = "";
			var tableId = "";
			var seq = "";
			var menuAction = "";
			var menuName = "";
			var memId = "";
			var groupId = "";
			var categoryId = "";
			
			
			var objUl = document.createElement("ul");
			var objLi;
			var objP;
			var objSpan;
			
	        for (var i = 0; i < list_item.length; i++){
	        	
                if(root.getElementsByTagName("IS_BOARD").length > 0){
                	isBoard= root.getElementsByTagName("IS_BOARD")[i].firstChild.nodeValue;
               	}else{
               		isBoard = "0";
             	}
             
             	if(root.getElementsByTagName("TITLE").length > 0){
                	title = root.getElementsByTagName("TITLE")[i].firstChild.nodeValue;
					
               	}else{
               		title = "0";
             	}
             	
             	if(root.getElementsByTagName("CNT").length > 0){
                	cnt = root.getElementsByTagName("CNT")[i].firstChild.nodeValue;
               	}else{
               		cnt = "0";
             	}
             	
             	if(root.getElementsByTagName("TABLE_ID").length > 0){
                	tableId= root.getElementsByTagName("TABLE_ID")[i].firstChild.nodeValue;
               	}else{
               		tableId = "0";
             	}
             	
           		if(root.getElementsByTagName("SEQ").length > 0){
                	seq = root.getElementsByTagName("SEQ")[i].firstChild.nodeValue;
               	}else{
               		seq = "0";
             	}
             	
             	if(root.getElementsByTagName("MENU_ACTION").length > 0){
                	menuAction = root.getElementsByTagName("MENU_ACTION")[i].firstChild.nodeValue;
               	}else{
               		menuAction = "0";
             	}
             	
             	if(root.getElementsByTagName("MENU_NAME").length > 0){
                	menuName = root.getElementsByTagName("MENU_NAME")[i].firstChild.nodeValue;
               	}else{
               		menuName = "0";
             	}
             	
             	if(root.getElementsByTagName("MEM_ID").length > 0){
                	memId = root.getElementsByTagName("MEM_ID")[i].firstChild.nodeValue;
               	}else{
               		memId = "0";
             	}
             	
				if(root.getElementsByTagName("GROUP_ID").length > 0){
                	groupId = root.getElementsByTagName("GROUP_ID")[i].firstChild.nodeValue;
               	}else{
               		groupId = "0";
             	}
             	
				if(root.getElementsByTagName("CATEGORY_ID").length > 0){
                	categoryId = root.getElementsByTagName("CATEGORY_ID")[i].firstChild.nodeValue;
               	}else{
               		categoryId = "0";
             	}
             	
             	
             	// 테이블 ID에 따라 링크 주소를 수정
             	var forwardUrl = "";
             	// 한줄잡담 혹은 가입인사
             	if( tableId == "18" || tableId == "224" ){
					forwardUrl = menuAction + "?cmd=view";
             	// 방송국형
             	}else if(tableId == "213" || tableId == "249" || tableId == "251" || tableId == "245" || 
             			 tableId == "246" || tableId == "250" || tableId == "252" || tableId == "248"){
             	  	forwardUrl = menuAction + "?cmd=list";
             	// 열운이야기
             	}else if(tableId == "41"){
             	  	forwardUrl = menuAction + "?cmd=view&seq=" + seq + "&groupId=" + groupId + "&memId=" + memId 
             	  				+(categoryId=="0"?"":"&categoryId="+categoryId);
				// 삼성맨이야기
             	}else if(tableId == "158"){
             	  	forwardUrl = menuAction + "?cmd=view&memId=" + memId + "&seq=" + seq + "&categoryId=" + categoryId;
             	// 그외
             	}else{
             		forwardUrl = menuAction + "?cmd=view&tid=" + tid + "&seq=" + seq;
             	}
             	
             	objLi = document.createElement("li");
             	
             	objP = document.createElement("p");
             	objP.setAttribute("class", "first");
             	objP.setAttribute("title", "[" + menuName + "] " + title);
	    		objP.innerHTML += "<a href=\'#\' onclick=\'openReplyWindow(\"" + forwardUrl+ "\"," + tableId + "," + seq + ")\'>(" + (isBoard=='Y'?'게시':'덧글') + ")&nbsp;" + title + "</a>";
	    		objLi.appendChild(objP);
	    		
	    		objSpan = document.createElement("span");
	    		objSpan.setAttribute("style", "width:30px; align:right;");
	    		objSpan.innerHTML =   "(" + cnt + ")";
	    		objLi.appendChild(objSpan);
	    							  
	    		objUl.appendChild(objLi);
	    	}
	    	
		    xml_view.appendChild(objUl);
	    }else{
			xml_view.innerHTML = "<ul><li>덧글이 없습니다.</li></ul>";
	    }
	    
    },
    
    loadRecentBoardCnt:function(formName){
    
    	$(formName).cmd.value ='ajax_loadRecentBoardCnt';
    	
    	var URL = '/quicklink.do';
        new Ajax.Request(URL, {
            method : 'POST',
            parameters: Form.serialize($(formName)),
            encoding : 'UTF-8',
            onComplete : function(xmlHttp) {
            
				var root = xmlHttp.responseXML.documentElement;
		        var cnt = root.getElementsByTagName("CNT")[0].firstChild.nodeValue;
		        refreshQuickLink("newBoardCnt", cnt);
		        
            },
            onFailure : function(){
            }
        });
    }
};

/**
IE때문에 오버라이드함
*/
if (/msie/i.test (navigator.userAgent)){
    document.getElementsByName = function(name){
         var tagAll = document.body.getElementsByTagName("*");
         var arr = new Array();
         for(i = 0,iarr = 0; i < tagAll.length; i++) {
              att = tagAll[i].getAttribute("name");
              if(att == name) {
                   arr[iarr] = tagAll[i];
                   iarr++;
              }
         }
         return arr;
    }
}



/**
* 덧글 수정시 레이어 띄우기...다른거 못누르게...
*/
var blockLayerByJedison = null;
var blockLayer = function () {
    var layer, modalLayer;

    var _layer_make = function () {
        var div, p, strong, a, img, div2;
        layer = document.body.appendChild( document.createElement('div') );
        layer.className = 'poplayer message';
        layer.style.display = 'none';
    };
    return {
        show : function () {
            if (!layer) _layer_make();
            
            if (!blockLayerByJedison) blockLayerByJedison = modalMaker();
            blockLayerByJedison.show(layer);             
        }
    };
}();

var showEmoticonForReply = function (insertArea) {

    if(user_id == '') {
        alert_module.show('confirm', {
            msg : message["board.alert.login.msg"],
            ok_func : function () {
                location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
                return;
            },
            cancel_func : function () {
                return;
            }
        });
        return;
    }
    
    //parent = (typeof parent == 'string')? e_(parent) : parent;
    emo_json.insertArea = insertArea;
    var emo = init_emo();

    var tempX = $('input_cmt').offsetLeft;
    var tempY = $('input_cmt').offsetTop;

    var scrollY = document.documentElement.scrollHeight;
    if (tempX < 0){tempX = 0;}
    if (tempX > 650 ) { tempX = 585; }
    if (tempY < 0){tempY = 0;}
    if (tempY + 240 > scrollY ) { tempY = tempY - 250; }
    
    emo.style.left = tempX + 220 + "px";
    emo.style.top = tempY + 20 +"px";
    emo.style.display = 'block';    
    //parent.appendChild(emo);  
};

var showEmoticonForEdit = function (insertArea) {

    if(user_id == '') {
        alert_module.show('confirm', {
            msg : message["board.alert.login.msg"],
            ok_func : function () {
                location.href = "/login.do?cmd=login&nextUrl=" + NEXT_URL;
                return;
            },
            cancel_func : function () {
                return;
            }
        });
        return;
    }
    
    //parent = (typeof parent == 'string')? e_(parent) : parent;
    emo_json.insertArea = insertArea;
    var emo = init_emo();

    var tempX = $('edit_cmt').offsetLeft;
    var tempY = $('edit_cmt').offsetTop;

    var scrollY = document.documentElement.scrollHeight;
    if (tempX < 0){tempX = 0;}
    if (tempX > 650 ) { tempX = 585; }
    if (tempY < 0){tempY = 0;}
    if (tempY + 240 > scrollY ) { tempY = tempY - 250; }
    
    emo.style.left = tempX + 30 + "px";
    emo.style.top = tempY + 20 +"px";
    emo.style.display = 'block';    
    //parent.appendChild(emo);  
};

// 캠퍼스리포터 게시물 평가입력..
function insertCampusReportEval(formName){
    $(formName).cmd.value ='ajax_insert_eval';
	var URL = '/campusreport.do';
	new Ajax.Request(URL, {
	    method : 'POST',
	    parameters: Form.serialize($(formName)),
	    encoding : 'UTF-8',
	    onComplete : function(xmlHttp) {
	        var responseStr = xmlHttp.responseText;
	        alert(responseStr);
	        location.href = location.href;
	    },
	    onFailure : function(){
	    }
	});
}

// 캠퍼스리포터 게시물 평가입력..
function updateCampusReportEval(formName){
    $(formName).cmd.value ='ajax_update_eval';
    var URL = '/campusreport.do';
    new Ajax.Request(URL, {
        method : 'POST',
        parameters: Form.serialize($(formName)),
        encoding : 'UTF-8',
        onComplete : function(xmlHttp) {
            var responseStr = xmlHttp.responseText;
            alert(responseStr);
        },
        onFailure : function(){
        }
    });
}