

	function chkAjaBrowser()
	{
	    var a, ua = navigator.userAgent;
	    this.bw = {
	        safari  :   ((a=ua.split('AppleWebKit/')[1])?a.split('(')[0]:0)>=124 ,
	        konqueror : ((a=ua.split('Konqueror/')[1])?a.split(';')[0]:0)>=3.3 ,
	        mozes     : ((a=ua.split('Gecko/')[1])?a.split(" ")[0]:0)>=20011128 ,
	        opera     : (!!window.opera) && ((typeof XMLHttpRequest)=='function') ,
	        msie      : (!!window.ActiveXObject)?(!!createHttpRequest()):false
	    }
	    return
	 (this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie)
	}

	////
	// XMLHttpRequest ???? ??

	function createHttpRequest()
	{
	    if(window.ActiveXObject) {
	        //Win e4,e5,e6?
	        try {
	            return new ActiveXObject("Msxml2.XMLHTTP");
	        } catch (e) {
	            try {
	                return new ActiveXObject("Microsoft.XMLHTTP");
	            } catch (e2) {
	                return null;
	            }
	        }
	    } else if(window.XMLHttpRequest) {
	        // Win Mac Linux m1, f1, o8 Mac s1 Linux k3?
	        return new XMLHttpRequest();
	    } else {
	        return null;
	    }
	}
	
	xmlHttpRequestObj = null;
	
	// AJAX ???? ?? ??
	function xmlHttpPost(actionUrl, submitParameter, resultFunction)
	{
	    var xmlHttpRequest = createHttpRequest();
	     if (xmlHttpRequest == null ) return null;


	    xmlHttpRequest.open('POST', actionUrl, true);
	    xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');


	    //???? ??
	    var bwoj = new chkAjaBrowser();
	    var opera = bwoj.bw.opera;
	    var safari = bwoj.bw.safari;
	    var konqueror = bwoj.bw.konqueror;
	    var mozes = bwoj.bw.mozes;

	    //?? ??
	    if (opera || safari || mozes) {
	        xmlHttpRequest.onload = function() {
		        switch (xmlHttpRequest.status)
		            {
		                case 404:
		                    //alert('?7?: ' + actionUrl + '?? x?????? ??=');
		                    alert("파일을 찾을수가 없습니다.\n경로 : "+ actionUrl);
		                    break;
		               case 500:
		                   //alert('?7?: ' + xmlHttpRequest.responseText);
		                   alert("처리시 장애가 발생하였습니다. \n다시 시도해 주시기바랍니다.");
		                   break;
		               default:
		                   eval(resultFunction + '(xmlHttpRequest.responseText);');
		                   break;
		            }
	         }
	    } else {
	          xmlHttpRequest.onreadystatechange = function() {
		        if(xmlHttpRequest.readyState == 4)
		        {
		            switch (xmlHttpRequest.status)
		            {
		                case 404:
		                    //alert('?7?: ' + actionUrl + '?? x?????? ??=');
		                    alert("파일을 찾을수가 없습니다.\n경로 : "+ actionUrl);
		                    break;
		               case 500:
		                   //alert('?7?: ' + xmlHttpRequest.responseText);
		                   alert("처리시 장애가 발생하였습니다. \n다시 시도해 주시기바랍니다.");
		                   break;
		               default:
		                   var msg = xmlHttpRequest.responseText;
		                   if(msg.indexOf("일반 에러 출력 페이지") > -1) {
		                         alert("DB 장애가 발생하였습니다. 다시 시도해 주시기 바랍니다.");
		                          jCloseLayer();
		                         //document.write(msg);
		                   }else{
		                   		eval(resultFunction + '(xmlHttpRequest.responseText);');
		                   }
		                   break;
		            }
		        }
		    }
	    }

	    xmlHttpRequest.send(submitParameter);
	    xmlHttpRequestObj = null;
	    xmlHttpRequestObj = xmlHttpRequest;
	}
	
	function xmlHttpRequestAbort(){
		if(xmlHttpRequestObj != null ){
			xmlHttpRequestObj.abort();
		}
	}

	//------------------------ xml 처리 ---------------------------------------
	// global flag
	var isIE = false;

	// global request and XML document objects
	var req;

	// 브라우저 버전 정보를 저장함.

	var bVerString = "";

	if (navigator.userAgent.indexOf('MSIE 7.0') >= 0) {
		bVerString = "IE7";
	}


	// 각 요청에 대한 객체를 생성한다.
	var reqList = new Array();

	if (window.XMLHttpRequest) {
		for (i=0; i < 3; i++) {
			reqList[i] = new XMLHttpRequest(); // 0: blog, 1: news, 2: notice용 객체
		}
	} else {
		for (i=0; i < 3; i++) {
			reqList[i] = new ActiveXObject("Microsoft.XMLHTTP"); // 0: blog, 1: news, 2: notice용 객체
		}
	}

	var idx = -1;

	function loadXMLDoc(url, type) {
	    // branch for native XMLHttpRequest object
	    if (window.XMLHttpRequest) {

	        if (type == "blog") {
	        	idx = 0;
	        	if (bVerString == "IE7")
			        reqList[idx].onreadystatechange = processReqChange;
			    else
			        reqList[idx].onload = processReqChange;
		    } else if (type == "news") {
		    	idx = 1;
		    	if (bVerString == "IE7")
			        reqList[idx].onreadystatechange = processReqChangeNews;
			    else
			    	reqList[idx].onload = processReqChangeNews;
		    } else if (type == "notice") {
		    	idx = 2;
		    	if (bVerString == "IE7")
			        reqList[idx].onreadystatechange = processReqChangeNotice;
			    else
			    	reqList[idx].onload = processReqChangeNotice;
		    }

		    if (idx >= 0) {
		        reqList[idx].open("GET", url, true);
		        reqList[idx].send(null);
	        }
	    // branch for IE/Windows ActiveX version

	    } else if (window.ActiveXObject) {
	        isIE = true;

	        //req = new ActiveXObject("Microsoft.XMLHTTP");
	        if (type == "blog") {
	        	idx = 0;
	        	reqList[idx].onreadystatechange = processReqChange;
	        } else if (type == "news") {
	        	idx = 1;
		    	reqList[idx].onreadystatechange = processReqChangeNews;
	        } else if (type == "notice") {
	        	idx = 2;
		    	reqList[idx].onreadystatechange = processReqChangeNotice;
	        }


	        if (idx >= 0) {
		        reqList[idx].open("GET", url, true);
		        reqList[idx].send();
	        }
	    }
	}


	// handle onreadystatechange event of req object

	function processReqChange() {

	    // only if req shows "loaded"
	    if (reqList[0].readyState == 4) {
	        // only if "OK"
	        if (reqList[0].status == 200) {
	            //clearTopicList();
	            //buildTopicList();
	            clearBlogList();
	            buildBlogList();

	         } else {
	            //alert("There was a problem retrieving the XML data:\n" +
	            //    reqList[0].statusText);
	            var preMsg = "블로그 데이터를 가지고 오는데 실패하였습니다. ";
	            var msg = "<a href=\"javascript:requestBlogMessage();\"><b>[다시 로드하기]</b></a>";
	            document.getElementById("de_main_blog").innerHTML = preMsg + msg;
	            document.getElementById("de_main_blog").style.height = "125";
	         }
	    }
	}

	// handle onreadystatechange event of req object
	function processReqChangeNews() {
	    // only if req shows "loaded"
	    if (reqList[1].readyState == 4) {
	        // only if "OK"
	        if (reqList[1].status == 200) {
	            //clearTopicList();
	            //buildTopicList();
	            clearNewsList();
	            buildNewsList();

	         } else {
	            //alert("There was a problem retrieving the XML data:\n" +
	            //    reqList[1].statusText);
	            var preMsg = "뉴스 데이터를 가지고 오는데 실패하였습니다. ";
	            var msg = "<a href=\"javascript:requestNewsMessage();\"><b>[다시 로드하기]</b></a>";
	            document.getElementById("de_main_news").innerHTML = preMsg + msg;
	            document.getElementById("de_main_news").style.height = "125";
	         }
	    }
	}

	// 공지사항 처리
	function processReqChangeNotice() {
	    // only if req shows "loaded"
	    if (reqList[2].readyState == 4) {
	        // only if "OK"
	        if (reqList[2].status == 200) {
	            clearNoticeList();
	            buildNoticeList();

	         } else {
	            //alert("There was a problem retrieving the XML data:\n" +
	            //    reqList[2].statusText);
	            var preMsg = "공지사항 데이터를 가지고 오는데 실패하였습니다. ";
	            var msg = "<a href=\"javascript:requestNoticeMessage();\"><br><b>[다시 로드하기]</b></a>";
	            document.getElementById("de_main_notice").innerHTML = preMsg + msg;
	            document.getElementById("de_main_notice").style.height = "125";
	         }
	    }
	}


	// 제목이 길 경우 잘라내는 함수
	function stringCutJs(str, strLen) {
		var length = 0;

		var i=0,l=0;
		var temp;
		var flag=0;

		//길이를 구한다.
		while(i < str.length)
		{
			temp = str.charAt(i);
			if (escape(temp).length > 4){
				l+=2;
				flag=1;
			} else if (temp!='\r'){
				l++;
			}
			i++;
		}

		length = l;


		var total_length = length;

		var max_length;

		if (strLen == null)
			max_length = 40;
		else
			max_length = strLen;

		var cut_str = str;

		if( total_length > max_length ){

		 if( flag == 1 ) max_length = max_length/2;
		 view_count = eval(max_length);
		 cut_str = str.substring(0, view_count) + "...";

		}

		//document.write(cut_str);
		return cut_str;
	}



	// invoked by "Category" select element change;
	// loads chosen XML document, clears Topics select
	// element, loads new items into Topics select element
	function loadDoc(evt) {
	    // equalize W3C/IE event models to get event object
	    evt = (evt) ? evt : ((window.event) ? window.event : null);
	    if (evt) {
	        // equalize W3C/IE models to get event target reference
	        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	        if (elem) {
	            try {
	                if (elem.selectedIndex > 0) {
	                    loadXMLDoc(elem.options[elem.selectedIndex].value);
	                }
	            }
	            catch(e) {
	                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
	                alert("Unable to get XML data:\n" + msg);
	                return;
	            }
	        }
	    }
	}

	// retrieve text of an XML document element, including
	// elements using namespaces
	function getElementTextNS(prefix, local, parentElem, index) {
	    var result = "";
	    if (prefix && isIE) {
	        // IE/Windows way of handling namespaces
	        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
	    } else {
	        // the namespace versions of this method
	        // (getElementsByTagNameNS()) operate
	        // differently in Safari and Mozilla, but both
	        // return value with just local name, provided
	        // there aren't conflicts with non-namespace element
	        // names
	        result = parentElem.getElementsByTagName(local)[index];
	    }
	    if (result) {
	        // get text, accounting for possible
	        // whitespace (carriage return) text nodes
	        if (result.childNodes.length > 1) {
	            return result.childNodes[1].nodeValue;
	        } else {
	            return result.firstChild.nodeValue;
	        }
	    } else {
	        return "n/a";
	    }
	}

	// empty Topics select list content
	function clearTopicList() {
	    var select = document.getElementById("topics");
	    while (select.length > 0) {
	        select.remove(0);
	    }
	}

	// add item to select element the less
	// elegant, but compatible way.
	function appendToSelect(select, value, content) {
	    var opt;
	    opt = document.createElement("option");
	    opt.value = value;
	    opt.appendChild(content);
	    select.appendChild(opt);
	}

	// fill Topics select list with items from
	// the current XML document
	function buildTopicList() {
	    var select = document.getElementById("topics");
	    var items = req.responseXML.getElementsByTagName("item");
	    // loop through <item> elements, and add each nested
	    // <title> element to Topics select element
	    for (var i = 0; i < items.length; i++) {
	        appendToSelect(select, i,
	            document.createTextNode(getElementTextNS("", "title", items[i], 0)));
	    }
	    // clear detail display
	    document.getElementById("details").innerHTML = "";
	}

	function clearBlogList() {
		var blogDiv = document.getElementById("de_main_blog");
	    blogDiv.innerHTML = "";
	}

	// 테스트로 특정영역에 결과를 뿌려주도록 한다.
	// the current XML document
	function buildBlogList() {
	    var contentDiv = document.getElementById("de_main_blog");
	    contentDiv.style.display = "block";
	    //var items = req.responseXML.getElementsByTagName("content");
	    var items = reqList[0].responseXML.getElementsByTagName("content");

		var preStr = "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
		//var preLStr = "<tr> <td height=\"21\"><NOBR style=\"overflow:hidden; width:280px; text-overflow:ellipsis;\"><a href=\"";
		//var tail = "</NOBR></a></td>";
		var preLStr = "<tr> <td height=\"21\"><span style=\"overflow:hidden; width:280px;\"><a href=\"";
		var tail = "</span></a></td>";

		var preDateStr = "<td width=\"90\" style=\"font:10px/11px Tahoma,verdana,돋움;text-align:right;color:#a5a5a5\">";

		var date = "";
	    var link = "";
	    var subject = "";
	    var postStr = "</table>";
	    var totalStr = preStr;


	    for (var i = 0; i < items.length; i++) {

	        link = document.createTextNode(getElementTextNS("", "linkurl", items[i], 0));
	        subject = document.createTextNode(getElementTextNS("", "subject", items[i], 0));
	        date = document.createTextNode(getElementTextNS("", "date", items[i], 0));

			totalStr += preLStr + link.nodeValue + "\">" + stringCutJs(subject.nodeValue) + tail + preDateStr + date.nodeValue + "</td> </tr>";

	    }

	    totalStr += postStr;

	    appendToBlog(contentDiv, totalStr);
	}

	function appendToBlog(contDiv, content) {
		//var smDiv;
		//smDiv = document.createElement("div");
		//smDiv.appendChild(content);
		contDiv.innerHTML = content;
	}


	function clearNewsList() {
		var blogDiv = document.getElementById("de_main_news");
	    blogDiv.innerHTML = "";
	}

	// 테스트로 특정영역에 결과를 뿌려주도록 한다.
	// the current XML document
	function buildNewsList() {
	    var contentDiv = document.getElementById("de_main_news");
	    contentDiv.style.display = "block";
	    //var items = req.responseXML.getElementsByTagName("content");
	    var items = reqList[1].responseXML.getElementsByTagName("content");

		var preStr = "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
		//var preLStr = "<tr> <td height=\"21\"><NOBR style=\"overflow:hidden; width:280px; text-overflow:ellipsis;\"><a href=\"";
		var preLStr = "<tr> <td height=\"21\"><span style=\"overflow:hidden; width:280px;\"><a href=\"";
	    var link = "";
	    var subject = "";
	    var postStr = "</table>";
	    var totalStr = preStr;

	    //var tail = "</NOBR></a></td>";
	    var tail = "</span></a></td>";
		var preDateStr = "<td width=\"90\" style=\"font:10px/11px Tahoma,verdana,돋움;text-align:right;color:#a5a5a5\">";
		var date = "";


	    //var totalStr = "";

	    //최대 6개까지만 리스트에 나타남.
	    var count = 0;
	    if (items.length > 6)
	    	count = 6;
	    else
	    	count = items.length;

	    for (var i = 0; i < count; i++) {

	        link = document.createTextNode(getElementTextNS("", "linkurl", items[i], 0));
	        subject = document.createTextNode(getElementTextNS("", "subject", items[i], 0));
	        date = document.createTextNode(getElementTextNS("", "date", items[i], 0));

			//totalStr += preLStr + link.nodeValue + "\">" + subject.nodeValue + "</a></td> </tr>";
			totalStr += preLStr + link.nodeValue + "\">" + stringCutJs(subject.nodeValue) + tail + preDateStr + date.nodeValue + "</td> </tr>";
	    }

	    totalStr += postStr;

	    appendToNews(contentDiv, totalStr);
	}

	function appendToNews(contDiv, content) {
		//var smDiv;
		//smDiv = document.createElement("div");
		//smDiv.appendChild(content);
		contDiv.innerHTML = content;
	}


	// 공지사항 처리
	function clearNoticeList() {
		var noticeDiv = document.getElementById("de_main_notice");
	    noticeDiv.innerHTML = "";
	}

	// 테스트로 특정영역에 결과를 뿌려주도록 한다.
	// the current XML document
	function buildNoticeList() {

	    var contentDiv = document.getElementById("de_main_notice");
	    contentDiv.style.display = "block";
	    //var items = req.responseXML.getElementsByTagName("content");
	    var items = reqList[2].responseXML.getElementsByTagName("content");

	    var preStr = "<table width=\"185\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin-right:1px;\"> <tr> <td height=\"10\"></td> </tr>" +
					 "<tr> <td height=\"22\" valign=\"top\" style=\"font:12px Tahoma,verdana,돋움;text-align:left; font-weight: bold\">공지사항" +
					 "<a href=\"http://eroom.korea.com/maildoumi/cate=667987\" target=\"_blank\"><img src=\"/t_default/ko/images/lib_img/btn_more.gif\" border=\"0\"></a></td>" +
					 " </tr> <tr> <td height=\"7\" valign=\"top\" ><img src=\"/t_default/ko/images/body_og_line.gif\"></td> </tr>";

		var preLStr = "<tr> <td height=\"21\"><span style=\"overflow:hidden; width:180px;\"><a href=\"";
	    var link = "";
	    var subject = "";
	    var postStr = "</table>";
	    var totalStr = preStr;

	    var tail = "</span></a></td></tr>";

	    //최대 3개까지만 리스트에 나타남.
	    var count = 0;
	    if (items.length > 3)
	    	count = 3;
	    else
	    	count = items.length;

	    for (var i = 0; i < count; i++) {

	        link = document.createTextNode(getElementTextNS("", "linkurl", items[i], 0));
	        subject = document.createTextNode(getElementTextNS("", "subject", items[i], 0));

			totalStr += preLStr + link.nodeValue + "\">" + stringCutJs(subject.nodeValue, 30) + tail;
	    }

	    totalStr += postStr;

	    appendToNotice(contentDiv, totalStr);
	}

	function appendToNotice(contDiv, content) {

		contDiv.innerHTML = content;
	}



	// display details retrieved from XML document
	function showDetail(evt) {
	    evt = (evt) ? evt : ((window.event) ? window.event : null);
	    var item, content, div;
	    if (evt) {
	        var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	        if (select && select.options.length > 1) {
	            // copy <content:encoded> element text for
	            // the selected item
	            item = req.responseXML.getElementsByTagName("item")[select.value];
	            content = getElementTextNS("content", "encoded", item, 0);
	            div = document.getElementById("details");
	            div.innerHTML = "";
	            // blast new HTML content into "details" <div>
	            div.innerHTML = content;
	        }
	    }
	}


