/**
 *	°øÅë ÀÚ¹Ù½ºÅ©¸³Æ®
 *
 *	@author	¿À°æ¼®
 *	@since	2006-06-08
 */


/**
 *	Error Page Interface
 * @param int	 line
 * @param event e
 * @param string user_msg
 */
function goErrorPage(line, e, msg) {
	var errorPage = "/Errors/scriptError.asp";
	var reqUrl = location.href + location.search;
	var strForm = "<form name=\"frmErrorPage\" method=\"post\" action=\""+errorPage+"\">";
	strForm += "<input type=\"hidden\" name=\"line\" value=\""+line+"\" />";
	strForm += "<input type=\"hidden\" name=\"err_num\" value=\""+(e.number & 0xFFFF)+"\" />";
	strForm += "<input type=\"hidden\" name=\"err_name\" value=\""+e.name+"\" />";
	strForm += "<input type=\"hidden\" name=\"err_msg\" value=\""+e.message+"\" />";
	strForm += "<input type=\"hidden\" name=\"user_msg\" value=\""+msg+"\" />";
	strForm += "<input type=\"hidden\" name=\"reqUrl\" value=\""+reqUrl+"\" />";
	strForm += "</form>	";
	document.body.innerHTML += strForm;
	document.frmErrorPage.submit();
}

/**
/* maxlength ¸¸Å­ ¿Å±â¸é ´ÙÀ½À¸·Î ÀÌµ¿ÇÏ±â
/* @param sFormName - String : Form name
/* @param sNow - String : ÇöÀç ÀÔ·ÂÁßÀÎ ÇÊµå¸í
/* @param sNext - String : ÀÌµ¿ÇÒ ÇÊµå¸í 
**/
function nextFocus(sFormName,sNow,sNext) {
	var sForm = 'document.'+ sFormName +'.'
	var oNow = eval(sForm + sNow);
	
	if (typeof oNow == 'object') {
		if ( oNow.value.length == oNow.maxLength) {
			var oNext = eval(sForm + sNext);

			if ((typeof oNext) == 'object')
				oNext.focus();
		}
	}
}


/**
* IFrame ÀÚµ¿ »çÀÌÁî Á¶Á¤
* @param frm - String : iframe id
* @param size - int : ÃÖ¼Ò ³ôÀÌ
**/
function resizeIframe(frm,size){
	var iframe = document.getElementById(frm); // iframe ÅÂ±×¿¡ id·Î ¼³Á¤ÇÑ °ª

	 // iframeÀÇ ³ôÀÌ¸¦ °¡Á®¿É´Ï´Ù.
	 var height = iframe.contentWindow.document.body.scrollHeight;
	 if (height < size) height = size;  // ¿©±â¼­ ¼ýÀÚ¸¦ ¹Ù²ãÁÖ¸é ÃÖ¼Ò ³ôÀÌ°¡ µË´Ï´Ù.
	 iframe.height = height;

	 // iframeÀÇ ³Êºñ¸¦ °¡Á®¿É´Ï´Ù. width´Â ´ë°³ °íÁ¤ÀÌ¶ó, ÇÊ¿ä¾øÀ¸¸é »èÁ¦.
	 //var width = iframe.contentWindow.document.body.scrollWidth;
	 //if (width < 300) width = 300;
	 //iframe.width = width;

	 // ¾Æ·¡ ¶óÀÎÀº iframeÀ» °¡Áö°í ÀÖ´Â TD³ª DIVÀÇ Å©±â¸¦ ´Ã·ÁÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ¾ø¾îµµ µ¿ÀÛÇÏ±ä ÇÕ´Ï´Ù.
	 iframe.parentElement.style.overflowX = "visible";
	 iframe.parentElement.style.overflowY = "visible";
}


/**
 *	±Ý¾× ÇÊµå¿¡ »ç¿ëÇÏ´Â ±Ý¾× Ç¥½Ã ÇÔ¼ö
 * @param Object form.text
 * @usage onkeyup="moneyUpdate(this)"
 */
function moneyUpdate(el) {
	var pattern = /([1-9]{1}[0-9]*$)+/;
	if (el.value.isNull()) return;
	var str = el.value.trim().split(",").join("")
	if (pattern.test(str) || el.value == "0") {
		var retVal="", s1="";
		if (str.length <= 3) {
			el.value = str;
			return;
		}
		for (var i=str.length -1; i >=0 ; i-- ) s1 += str.charAt(i);
		for (var i=s1.length -1; i >=0 ; i-- ) {
			retVal += s1.charAt(i);
			if(i % 3 == 0 && i != 0) retVal += ",";
		}
		el.value = retVal;
	}else{
		el.value = "";
	}
}

/**
 *	±Ý¾× ÇÊµå¿¡ »ç¿ëÇÏ´Â ±Ý¾× Ç¥½Ã ÇÔ¼ö2
 * @param String
 * @return String
 * @usage onkeyup="moneyUpdate2('1000')"
 */
function moneyUpdate2(el) {
	var pattern = /([1-9]{1}[0-9]*$)+/;
	if (el.isNull()) return;
	var str = el.trim().split(",").join("")
	if (pattern.test(str)) {
		var retVal="", s1="";
		if (str.length <= 3) {
			el = str;
			return;
		}
		for (var i=str.length -1; i >=0 ; i-- ) s1 += str.charAt(i);
		for (var i=s1.length -1; i >=0 ; i-- ) {
			retVal += s1.charAt(i);
			if(i % 3 == 0 && i != 0) retVal += ",";
		}
		el = retVal;
	}else{
		el = "0";
	}
	return el;
}

/*  Function Equivalent to URLEncoder.encode(String, "UTF-8")
    Copyright (C) 2002 Cresc Corp.
    Version: 1.0
*/
function encodeURL(str){
	if (!str) return "";
    var s0, i, s, u;
    s0 = "";                // encoded str
    for (i = 0; i < str.length; i++){   // scan the source
        s = str.charAt(i);
        u = str.charCodeAt(i);          // get unicode of the char
        if (s == " "){s0 += "+";}       // SP should be converted to "+"
        else {
            if ( u == 0x2a || u == 0x2d || u == 0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >= 0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <= 0x7a))){     // check for escape
                s0 = s0 + s;           // don't escape
            }
            else {                      // escape
                if ((u >= 0x0) && (u <= 0x7f)){     // single byte format
                    s = "0"+u.toString(16);
                    s0 += "%"+ s.substr(s.length-2);
                }
                else if (u > 0x1fffff){     // quaternary byte format (extended)
                    s0 += "%" + (oxf0 + ((u & 0x1c0000) >> 18)).toString(16);
                    s0 += "%" + (0x80 + ((u & 0x3f000) >> 12)).toString(16);
                    s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
                    s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                }
                else if (u > 0x7ff){        // triple byte format
                    s0 += "%" + (0xe0 + ((u & 0xf000) >> 12)).toString(16);
                    s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
                    s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                }
                else {                      // double byte format
                    s0 += "%" + (0xc0 + ((u & 0x7c0) >> 6)).toString(16);
                    s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
                }
            }
        }
    }
    return s0;
}

/**
 *	XMLÀÇ
 *
 *
 */
// <![CDATA[data]]>ÀÇ data¸¦ °¡Á®¿À´Â ÇÔ¼ö ³ëµåÅ¸ÀÔ 4¹ø//
// <![CDATA[data]]>°¡ ¾Æ´Ñ data ´Â ³ëµåÅ¸ÀÔÀÌ 3¹ø//
function getNodeText(node) {
	var sText = "";
	if (!node.hasChildNodes()) return sText;
	node = node.childNodes;
	if (!node) return sText;
	for ( var i=0 ; i < node.length ; i++ ) {
		if (node[i].nodeType == 4 || node[i].nodeType == 3) {
			sText = node[i].data;
		}
	}
	return sText;
}


/*
    String name, value
    Date expires
    String path, domain
    Boolean secure

    optional: expires,path,domain,secure
*/
function setCookie(name,value,expires,path,domain,secure) {
	if (!path) path = "/";
    document.cookie =   name + '=' + escape(value)         + ';'
        + ((expires) ? ' expires=' + expires.toGMTString() + ';' : '')
        + ((path)    ? ' path='    + path                  + ';' : '')
        + ((domain)  ? ' domain='  + domain                + ';' : '')
        + ((secure)  ? ' secure'                           + ';' : '');
}

// Returns a string or false
function getCookie(name) {
    var srch = name + '=';
    if (document.cookie.length > 0) {
        offset = document.cookie.indexOf(srch);
        if (offset != -1) {
            offset += srch.length;
            end = document.cookie.indexOf(';', offset);
            if (end == -1) end = document.cookie.length;
            return unescape(document.cookie.substring(offset, end));
        } else return false;
    } else return false;
}

// optional: path,domain
function delCookie(name,path,domain) {
    if (Q_getCookie(name))
        document.cookie = name                 + '=;'
            + ' expires=Thu, 01-Jan-70 00:00:01 GMT;'
            + ((path)   ? ' path='    + path    + ';' : '')
            + ((domain) ? ' domain='  + domain  + ';' : '');
}

/**
 *	¹®ÀÚ¿­¿¡¼­ Æ¯Á¤¹®ÀÚ¸¦ ´Ù¸¥ ¹®ÀÚ·Î ¹Ù²ß´Ï´Ù.
 *
 *	@param string val ¹®ÀÚ¿­
 *	@param string str Æ¯Á¤¹®ÀÚ
 *	@param string str2 ¹Ù²Ü¹®ÀÚ
 *	@return string
 */
function replace(val, str, str2) {
	if (typeof (val) == 'undefined'
		|| typeof (str) == 'undefined'
		|| typeof (str2) == 'undefined' ) {
		window.status = "function replace(s0,s1,s2) ÀÎ¼ö°¡ ³Ñ¾î ¿ÀÁö ¾Ê¾Ò½À´Ï´Ù!";
		return false;
	}
	if (val.length < 1 || val.length < str.length) return false;

	var newStr = "";
	var rr = Array();
	for (var i=0 ; i < val.length - str.length + 1 ; i++ ) {
		if (str == val.substring(i, i + str.length)) {
			rr[rr.length] = i;
		}
	}
	if (rr.length > 0) {
		var old = 0;
		for (var i=0; i < rr.length ; i++ ) {
			if (rr[i] != old) {
				newStr += val.substring(old,rr[i]);
				old = rr[i] + str.length;
			}
			newStr += str2;
			if (i == rr.length -1) {
				newStr += val.substring(rr[i] + str.length,val.length);
			}
		}
		return newStr;
	}else
		return val;
}

/**
 *	ÀÌº¥Æ® ÇÚµé·¯ µî·Ï
 *	@useage addEvent(window,'load',func_preload);
 */
function addEvent(obj, evType, fn, useCapture){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, useCapture);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		alert("Handler could not be attached");
	}
}

/**
 *	ÀÌº¥Æ® ÇÚµé·¯ »èÁ¦
 *	@useage removeEvent(window,'load',func_preload);
 */
function removeEvent(obj, evType, fn, useCapture){
	if (obj.removeEventListener){
		obj.removeEventListener(evType, fn, useCapture);
		return true;
	} else if (obj.detachEvent){
		var r = obj.detachEvent("on"+evType, fn);
		return r;
	} else {
		alert("Handler could not be removed");
	}
}

/**
 *	ÀÌ¸ÞÀÏ¸µÅ© - ÀÌ¸ÞÀÏ Å©·Ñ¸øÇÏ°Ô ÇÏ±â À§ÇØ »ç¿ë
 *	
 */
function MailtoClick_Func(MDomain,MailID){
	var goMailAddress = "mailto:"+ MailID +"@"+ MDomain;

	self.location.href = goMailAddress;
	return;  
}


/**
 *	ÀÎ¼ö·Î ³Ñ±ä ºÐ¸®ÀÚ·Î ±¸ºÐÇÏ¿© µ¹·ÁÁØ´Ù.
 *	@param	String separator »ý·«°¡´É
 *	@return String Date
 *	@EX > YYYY-MM-DD
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 */
Date.prototype.toCalendar = function(separator) {
	if (typeof(separator) == 'undefined' || separator == "") separator = "-";
	var tmp = new Array(3);
	tmp[0] = this.getFullYear(); //
	tmp[1] = this.getMonth() + 1;
	tmp[2] = this.getDate();
	if (tmp[1] < 10) tmp[1] = "0" + tmp[1];
	if (tmp[2] < 10) tmp[2] = "0" + tmp[2];
	return tmp.join(separator);
}

/**
 *	¹®ÀÚ¿­¿¡¼­ ºó¹®ÀÚ¸¦ Á¦°ÅÇÏ°í µ¹·ÁÁØ´Ù.(Ã¹,¸¶Áö¸·¹®ÀÚ¿¡ ½ºÆäÀÌ½º¿Í \n\r\t µî)
 *	@return String
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 */
String.prototype.trim = function(str) {
	str = this != window ? this : str;
	return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
}

/**
 *	¹®ÀÚ¿­¿¡¼­ ¿øÇÏ´Â ±æÀÌ(byteÇü½Ä)¸¦ µ¹·ÁÁÝ´Ï´Ù.
 *	@return int length
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 */
String.prototype.bytes = function(str) {
	str = this != window ? this : str; len = 0;
	for(var i=0; i < str.length; i++) {
		len += (str.charCodeAt(i) > 128) ? 2 : 1
	}
	return len;
}

/**
 *	¹®ÀÚ¿­¿¡¼­ ¿øÇÏ´Â ±æÀÌ(byteÇü½Ä)¸¸Å­ Àß¶ó³»¾î µ¹·ÁÁØ´Ù.
 *	@param Int (byteÀÇ ±æÀÌ)
 *	@return String
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 */
String.prototype.cut = function(len,str) {
	str = this != window ? this : str;
	var l = 0;
	for (var i=0; i<str.length; i++) {
			l += (str.charCodeAt(i) > 128) ? 2 : 1;
			if (l > len) return str.substring(0,i);
	}
	return str;
}

/**
 *	³Î°ªÀÎÁö È®ÀÎ
 *	@return boolean
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 */
String.prototype.isNull = function(str) {
	str = this != window ? this : str;
	return (str.trim().length == 0) ? true : false ;
}

/**
 *	¼ýÀÚÇü½ÄÀÎÁö È®ÀÎ
 *	@return boolean
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 */
String.prototype.isNumeric = function(str) {
	str = this != window ? this : str;
	return (!str.isNull() && !isNaN(str)) ? true : false ;
}

/**
 *	¹®ÀÚ¿­ÀÌ ÀÎ¼ö·Î ³Ñ¾î¿Â ¹®ÀÚ°¡ °°ÀºÁö ºñ±³ÇÑ´Ù.
 *	@param str
 *	@return boolean
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 */
String.prototype.isEqual = function(str, orgStr) {
	orgStr = this != window ? this : orgStr;
	return (orgStr == str) ? true : false ;
}

/**
 *	¹®ÀÚ¿­ÀÌ ³¯Â¥Çü½Ä°ú ÀÏÄ¡ÇÏ´ÂÁö ºñ±³ÇÑ´Ù. 2006-01-01
 *	@param str
 *	@return boolean
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 */
String.prototype.isDate = function(str) {
	str = this != window ? this : str;
	var pattern = /^([1]{1}[9]{1}[0-9]{2}|[2]{1}[0]{1}[0-9]{2})-?([0]{1}[1-9]{1}|[1]{1}[0-2]{1})-?([0]{1}[1-9]{1}|[3]{1}[0-1]{1}|[12]{1}[0-9]{1})$/
	return (pattern.test(str)) ? true : false ;
}

/**
 *	Á¤Áø¿ì(nikaej@cloud9.co.kr)
 *	¹®ÀÚ¿­¿¡¼­ ¿À¸¥ÂÊ ¹®ÀÚ ÃßÃâÇÏ±â.
 *	@param len : ¿À¸¥ÂÊ¿¡¼­ °¡Á®¿Ã ¹®ÀÚ ¼ö.
 *	@return String
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 *	ex) iChr = "000".concat(1).right(3);		<= ÀÌ·±½ÄÀ¸·Î ¾Õ¿¡ 0À» ºÙÀÏ ¶§µµ »ç¿ëÇÒ ¼ö ÀÖÀ½.(001,002,...)
 */
String.prototype.right = function(len) {
	if (typeof (len) == 'undefined') {
		window.status = "ÀÎ¼ö°¡ ³Ñ¾î ¿ÀÁö ¾Ê¾Ò½À´Ï´Ù!";
		return false;
	}
	if (this.length < len){
		window.status = "ÁöÁ¤ÇÑ ÀÎ¼ö°¡ ¹®ÀÚ¿­º¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù!";
		return false;
	}
	str = this.substring((this.length-len),this.length);
	return str;
}

/**
 *	Á¤Áø¿ì(nikaej@cloud9.co.kr)
 *	¹®ÀÚ¿­¿¡¼­ ¿ÞÂÊ ¹®ÀÚ ÃßÃâÇÏ±â.
 *	@param len : ¿ÞÂÊ¿¡¼­ °¡Á®¿Ã ¹®ÀÚ ¼ö.
 *	@return String
 *	@ IE,FF ¿¡¼­ È®ÀÎµÊ
 *	ex) iChr = "abc123".right(3);		<= °á°ú : abc
 */
String.prototype.left = function(len) {
	if (typeof (len) == 'undefined') {
		window.status = "ÀÎ¼ö°¡ ³Ñ¾î ¿ÀÁö ¾Ê¾Ò½À´Ï´Ù!";
		return false;
	}
	if (this.length < len){
		window.status = "ÁöÁ¤ÇÑ ÀÎ¼ö°¡ ¹®ÀÚ¿­º¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù!";
		return false;
	}
	str = this.substring(0,len);
	return str;
}


/**
 *	¹è¿­ÀÇ ÀÎµ¦½º¸¦ »èÁ¦ÇÑ´Ù.
 *	@param	index
 *	@ÁÖÀÇ : ¹®ÀÚÇü ¹è¿­ÀÇ °æ¿ì´Â Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù.
 */
Array.prototype.remove = function (index) {
	if (typeof(index) == 'undefined') return;
	if (index >= this.length) return;
	if (index == 0) {
		this.shift();
	}else{
		for (var i=index ; i < this.length - 1 ;i++ ) {
			this[i] = this[i+1];
		}
		this.pop();
	}
}

/**
 *	¹è¿­¿¡ key°ªÀÌ Á¸ÀçÇÏ´ÂÁö °Ë»ç ÇÑ´Ù.
 *	@param	key
 *	@return boolean
 */
Array.prototype.isKey = function (key) {
	if (typeof(key) == 'undefined') {
		status = 'useage : reference Array.isKey(key)'
		return false;
	}
	return (typeof(this[key]) != 'undefined');
}

/**
 *	¹è¿­¿¡ ÀÎ¼ö·Î ³Ñ±ä °ªÀÌ Á¸ÀçÇÏ´ÂÁö ¿©ºÎ¿Í ÀÎµ¦½º¸¦ ³Ñ°ÜÁØ´Ù..
 *	@param	val
 *	@return index
 *	@ÁÖÀÇ : °ªÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, -1 À» ¸®ÅÏ ÇÕ´Ï´Ù.
 */
Array.prototype.indexAt = function (val) {
	var retVal = -1;
	if (typeof(val) == 'undefined') return retVal;
	if (this.length == 0) return retVal;
	for (var i=0 ; i < this.length ;i++ ) {
		if (this[i] == val) {
			retVal = i;
			break;
		}
	}
	return retVal;
}

/**
 *	XMLHttpRequest ¿¬°áÀ» ¸¸µç´Ù.
 *	@return XMLHttpRequest
 * 	@ÁÖÀÇ ¿¬°á ½ÇÆÐ½Ã Null
 */
function makeXMLHttpRequest() {
	var conn = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		conn = new XMLHttpRequest();
		if (conn.overrideMimeType) {
			conn.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			conn = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				conn = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	return conn;
}

/**
 *	Æ¯Á¤ URLÀÇ XMLÀ» ¹Þ¾Æ ¿É´Ï´Ù.
 *	@param url
 *	@return xml Object
 *	@ÁÖÀÇ ¸®ÅÏ°ªÀ» ¹Ýµå½Ã Ã¼Å©ÇÒ °Í null ÀÌ¸é ¿À·ùÀÓ
 */
function getUrlToXml(url) {
	return getXmlFromUrl(url,"GET");
}

function uni2ascii(s) {
    var r = '';
    for(var i=0; i < s.length; i++) {
        if (s.charCodeAt(i) > 128) {
            r += '&#'+s.charCodeAt(i)+';';
        } else {
            r += s.substr(i,1);
        }
    }
    return r;
}

/**
 *	Æ¯Á¤ URLÀÇ XMLÀ» ¹Þ¾Æ ¿É´Ï´Ù.
 *	@param url
 *	@param method
 *	@param params url ÀÎ¼öÇüÅÂ ¿¹> name=111&kk=xxx
 *	@return xml Object
 *	@ÁÖÀÇ ¸®ÅÏ°ªÀ» ¹Ýµå½Ã Ã¼Å©ÇÒ °Í null ÀÌ¸é ¿À·ùÀÓ
 */
function getXmlFromUrl(url,method,params,charset) {
	var conn = makeXMLHttpRequest();
	var result = null;
	if (typeof(method) == 'undefined' || method.toUpperCase() != "POST") method = "GET";
	if (typeof(charset) == 'undefined') charset = "UTF-8";

	try {
		conn.open( method , url, false );
		conn.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded; charset="+charset );
		if (typeof(params) == 'undefined' || params == "")
			conn.send(null);
		else {
			conn.send(params);
		}

		if (conn.readyState == 4) {
			switch(conn.status) {
				case 200 :
					result = conn.responseXML.documentElement;
					break;
				case 403 :
					window.status = "403 Forbidden";
					break;
				case 404 :
					window.status = "404 Not Found";
					break;
				default :
					window.status = "400 Fault Request";
			}
		}else{
			window.status = "Fault Header";
		}

	} catch (e) {
		window.status = "Nested catch caught " + e;
	} finally {
		return result;
	}
}

/**
 *	µ¿Àû  url·Î ºÎÅÍ[POST] °á°ú¸¦  ¸®ÅÏ ¹Þ½À´Ï´Ù. °á°ú ¼ÂÀº xml ÇüÅÂ¿©¾ß ÇÕ´Ï´Ù.
 *	@param url
 *	@param params ³Ñ±æ ÀÎ¼ö urlÇüÅÂ
 *	@return °á°ú°ª
 *	@ÁÖÀÇ : ¿äÃ»ÇÏ´Â °÷¿¡¼­´Â ¹Ýµå½Ã °á°ú¸¦ xml ÇüÅÂ <main><result>°á°ú°ª</result></main>·Î ³Ñ°Ü¾ß ÇÕ´Ï´Ù.
 *	@ÁÖÀÇ ¸®ÅÏ°ªÀ» ¹Ýµå½Ã Ã¼Å©ÇÒ °Í null ÀÌ¸é ¿À·ùÀÓ
 */
function getResultFromUrl(url,params) {
	var xmlDoc = getXmlFromUrl(url, "POST", params);
	if (xmlDoc == null) return null;

	var node = xmlDoc.childNodes;
	for (var i=0; i < node.length ; i++ ) {
		if (node[i].nodeType == 1) {
			return getNodeText(node[i]);
		}
	}
	return null;
}


/**
 *	ÇØ´çÇÏ´Â URL¿¡ ¿äÃ»À» ÇÏ¿©,, °á°ú °ªÀ» ¾Ë·Á ÁÝ´Ï´Ù.
 *	@param	String URL
 *	@return	Status
 */
function getStatusFromUrl(url) {
	var conn = makeXMLHttpRequest();
	var result = null;
	try {
		conn.open( "GET" , url, false );
		conn.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded; charset=UTF-8");
		conn.send(null);
		result = conn.status;
	} catch (e) {
		window.status = "Nested catch caught " + e;
	} finally {
		return result;
	}
}

/**
 *	°ø¿ë/ ÀÌ¸ÞÀÏ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidEmail(str){ //ÀÌ¸ÞÀÏ °Ë»ç
	return (sysIsValidPattern(str.trim(),/^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/)) ? true : false;
}

/**
 *	°ø¿ë/ ÀüÈ­¹øÈ£ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidPhone(str) {
	return (sysIsValidPattern(str.trim(),/^([0]{1}[0-9]{1,2})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/)) ? true : false;
}

/**
 *	°ø¿ë/ ÀÌµ¿ÀüÈ­ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidMobile(str) {
	return (sysIsValidPattern(str.trim(),/^([0]{1}[1]{1}[167890]{1})-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/)) ? true : false;
}

/**
 *	°ø¿ë/ ¾ËÆÄºª Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidAlpha(str) {
	return (sysIsValidPattern(str.trim(),/^[a-zA-Z]+$/)) ? true : false;
}

/**
 *	°ø¿ë/ ¾ËÆÄºª ¼Ò¹®ÀÚ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidAlphaSmall(str) {
	return (sysIsValidPattern(str.trim(),/^[a-z]+$/)) ? true : false;
}

/**
 *	°ø¿ë/ ¾ËÆÄºª ´ë¹®ÀÚ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidAlphaLarge(str) {
	return (sysIsValidPattern(str.trim(),/^[A-Z]+$/)) ? true : false;
}

/**
 *	°ø¿ë/ ¾ËÆÄºª°ú ¼ýÀÚ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidAlphaNum(str) {
	return (sysIsValidPattern(str.trim(),/^[a-zA-Z0-9]+$/)) ? true : false;
}

/**
 *	ÀÛ¼ºÀÚ : Á¤Áø¿ì(nikaej@cloud9.co.kr)
 *	°ø¿ë/ ¾ËÆÄºª ¼Ò¹®ÀÚ¿Í ¼ýÀÚ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidAlphaSmallNum(str) {
	return (sysIsValidPattern(str.trim(),/^[a-z0-9]+$/)) ? true : false;
}

/**
 *	°ø¿ë/ ÇÑ±Û Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidHangul(str) {
	return (sysIsValidPattern(str.trim(),/[°¡-Èþ]/)) ? true : false;
}

/**
 *	°ø¿ë/ ¼ýÀÚ Çü½Ä¿¡ ¸Â´ÂÁö °Ë»ç
 *	@param	String str
 *	@return	boolean
 */
function comIsValidNumeric(str) {
	return (sysIsValidPattern(str.trim(),/[0-9]/)) ? true : false;
}

/**
 *	½Ã½ºÅÛ/ ÆÐÅÏÅ×½ºÆ® °á°ú¸¦ ¸®ÅÏ
 *	@param	String str
 *	@param	String pattern
 *	@return	boolean
 */
function sysIsValidPattern(str,pattern) {
	return (pattern.test(str)) ? true : false;
}

/**
 *	°ø¿ë/ ¼ýÀÚÇü½ÄÀÌ°í, Á¦ÇÑÀÚ¸® ¹üÀ§ÀÏ °æ¿ì ÂüÀ» ¸®ÅÏ
 *	@param	String str
 *	@param	int limit
 *	@return	boolean
 */
function comIsValidNumLimit(str,limit) {
	return (str.isNumeric() && str.length <= limit) ? true : false;
}


/**
 *	°ø¿ë/ ¿¡·¯¸¦ ¹ß»ý½ÃÅ°°í, °æ°íÃ¢À» ¶Ù¿ì¸ç, ÇØ´çÇÊµå¿¡ Æ÷Ä¿¸¦ ÁØ´Ù.
 *	@param el [ÆûÀÇ ¿¤¸®¸ÕÆ®]
 *	@param msg [¿¡·¯ÀÇ ¸Þ½ÃÁö]
 *	@return false [Ç×»ó false¸¦ ¸®ÅÏÇÑ´Ù]
 */
function formError(el,msg){
	alert(msg);
	try {
		el.focus();
	} catch (e) {}
	return false;
}

function raiseError(el,msg){
	return formError(el,msg);
}

/**
 *	°ø¿ë/ ÀÚµ¿Æ÷Ä¿½º, ÆûÀ» ÀÎ¼ö·Î ¹ÞÀ»¼ö ÀÖ´Ù
 *	@param [form]
 */
function setAutoFocus(f) {
	var el = null;
	if (typeof(f) == 'undefined') {
		if (document.forms.length < 1) return;
		else f = document.forms[0];
	}
	for (var i = 0 ; i < f.elements.length ; i++ ) {
		el = f.elements[i];
		if (el.type == "text" || el.type == "textarea" || el.type == "password") {
			try{
				el.focus();
				break;
			}catch(e) {
				continue;
			}
		}
	}
}


/**
 *	°ø¿ë/ ÇÊµå¿¡ Á¤ÀÇÇÑ maxbyte Ç×¸ñÀ» Ã¼Å© ÇÑ´Ù.
 *	db¿¡¼­ Á¤ÀÇÇÑ ÇÊµå±æÀÌ¸¦ Á¦ÇÑÇÒ¶§ »ç¿ëÇÔ
 *
 *	@param	[form]
 *	@param	boolean
 */
function checkMaxByte(f) {
	alert(f);
	var el = null;
	var retVal = true;
	if (typeof(f) == 'undefined') {
		if (document.forms.length < 1) return;
		else f = document.forms[0];
	}
	for (var i = 0 ; i < f.elements.length ; i++ ) {
		el = f.elements[i];
		if (el.getAttribute("maxByte") != null) {
			if (el.value.bytes() > el.getAttribute("maxByte")) {
				msg = "\nÀÔ·ÂµÈ µ¥ÀÌÅÍÀÇ ±æÀÌ°¡ ÃÖ´ë±æÀÌ °ªÀ» ÃÊ°ú ÇÏ¿´½À´Ï´Ù.     \n\nÀÔ·Âµ¥ÀÌÅÍ¸¦ È®ÀÎÇØ ÁÖ¼¼¿ä!"; // \n\nÃÖ´ë±æÀÌ : "+el.getAttribute("maxByte")+" bytes\n\nÀÔ·Â±æÀÌ : "+el.value.bytes() +" bytes\n\n";
				/*
				if (el.type != "password") {
					msg += "["+cutString(el.value,50)+"]\n";
				}
				*/
				alert(msg);
				retVal = false;
				try{
					el.focus();
				}catch(e) {}
				break;
			}
		}
	}
	return retVal;
}


function cutString(str,len,dem) {
	if (typeof(dem) == 'undefined')	dem = "...";
	if(str.bytes() > len){
		return str.cut(len) + dem;
	}else{
		return str;
	}
}

/**
 * 	¹Ý¿Ã¸² ÇÔ¼ö num ÀÚ¸® ±îÁö Ç¥Çö ÀÌÈÄ¿¡¼­ ¹Ý¿Ã¸²
 *	@param	float|double|int val
 *	@param	int num
 *	@return float|int
 */
function round3(val,num) {
	var retval;
	var dm = 1;
	for (var i=0;i < Math.abs(num) ;i++ ) dm *= 10;
	if (num < 0) retval = (parseInt(parseFloat(val) / dm + 0.5) * dm);
	else retval = (parseInt(parseFloat(val) * dm + 0.5) / dm);
	return retval;
}

/**
 * 	È­¸éÀÇ °¡¿îµ¥·Î »õÃ¢À» ¿­¾îÁÝ´Ï´Ù.
 *	@param	String url
 *	@param	String window_name
 *	@param	int width
 *	@param	int height
 *	@param	String scroll 'yes':'no'
 *	@return window
 */
function popWindow(url,name,width,height,scroll) {
	var x = (screen.width - width) / 2 - 4;
	var y = (screen.height - height) / 2 - 16;
	var win = window.open(url,name,"left="+x+",top="+y+",width="+width+",height="+height+",scrollbars="+scroll);
	if (win) {
		win.focus();
		return win;
	}
}

/**
 * 	iframe ÀÇ ³ôÀÌ¸¦ Àç Á¶Á¤ÇÑ´Ù
 *	@param	iframe
 */
function iframeAutoResize(iframe) {
	if (typeof(iframe) == 'undefined' || typeof(iframe) != 'Object') return;
	iframe.setExpression('height',iframe.contentWindow.document.body.scrollHeight);
}

/**
 * 	Ã¼Å©»óÀÚÀÇ ¸ðµç °ªÀ» ¼±ÅÃ(true)ÇÏ°Å³ª, ÇØÁ¦(false) ÇÕ´Ï´Ù.
 *	@param	form
 *	@param	fieldname
 *	@param	boolean
 */
function checkboxSelectAll(f,fieldName,bool){
	if(typeof(f.elements[fieldName]) == 'undefined') return false;
	if(typeof(f.elements[fieldName].length) == 'undefined'){
		if(bool)f.elements[fieldName].checked = true;
		else f.elements[fieldName].checked = false;
	}else{
		for(var i=0;i<f.elements[fieldName].length;i++){
			if(bool)f.elements[fieldName][i].checked = true;
			else f.elements[fieldName][i].checked = false;
		}
	}
}

/**
 * 	Ã¼Å©»óÀÚÀÇ ÀüÃ¼¼±ÅÃ(true) ÈÄ ÇÏÀ§Ç×¸ñÀ» ÇØÁ¦(false)ÇÒ °æ¿ì ÀüÃ¼¼±ÅÃ(checkbox)¸¦ ÇØÁ¦(false)ÇÔ
 *	@param	form
 *	@param	fieldname  ÀüÃ¼¼±ÅÃ¹öÆ°(checkbox)
 */
function checkboxSelectAllCancel(f, fieldName){
	if(typeof(f.elements[fieldName]) == 'undefined') return false;
	f.elements[fieldName].checked = false;
}

/**
 * 	Ã¼Å©»óÀÚ È¤Àº ¶óµð¿À¹öÆ° ±×·ìÀÇ ¼±ÅÃ¿©ºÎ(°¹¼ö)¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 *	@param	form
 *	@param	fieldname
 *	@return int
 */
function checkboxSelectedCount(f,fieldName){
	if(typeof(f.elements[fieldName]) == 'undefined') return 0;
	if(typeof(f.elements[fieldName].length) == 'undefined') {
		if(f.elements[fieldName].checked) return 1;
		else return 0;
	}else{
		var cnt = 0;
		for(var i=0;i<f.elements[fieldName].length;i++) {
			if(f.elements[fieldName][i].checked)
				cnt++;
		}
		return cnt;
	}
}

/**
 * 	Ã¼Å©»óÀÚ È¤Àº ¶óµð¿À ¹öÆ°ÀÇ ¼±ÅÃµÇ¾îÁø ¸ðµç °ªÀ» ÄÄ¸¶·Î ±¸ºÐÇÏ¿© ¹®ÀÚ¿­·Î µ¹·ÁÁÝ´Ï´Ù.
 *	@param	form
 *	@param	fieldName
 *	@param	fieldGubun
 *	@return String
 */
function checkboxSelectedValue(f,fieldName,fieldGubun){
	if(typeof(f.elements[fieldName]) == 'undefined') return;
	if(typeof(fieldGubun) == 'undefined') fieldGubun = ",";
	if(typeof(f.elements[fieldName].length) == 'undefined') {
		if(f.elements[fieldName].checked) return f.elements[fieldName].value;
		else return;
	}else{
		var checkedCount = 0;
		var tmp = "";
		for(var i=0;i<f.elements[fieldName].length;i++) {
			if(f.elements[fieldName][i].checked) {
				if (checkedCount != 0) tmp += fieldGubun;
				tmp += f.elements[fieldName][i].value;
				checkedCount ++;
			}
		}
		return tmp;
	}
}

/**
 * 	¼¿·ºÆ® ¹Ú½ºÀÇ ¸ðµç ¿É¼ÇÀ» Á¦°ÅÇÑ´Ù
 *	@param	selectbox
 */
function selectRemoveAll(el) {
	if (typeof(el) == 'undefined' || el.tagName != "SELECT") return;
	for( i = el.length ; i >= 0 ; i-- ) el.options[i] = null;
}


/**
 *	°ø¿ë/ Æû¿¡ ÀÚµ¿À¸·Î °ªÀ» ¼¼ÆÃ ÇÕ´Ï´Ù.
 *
 *	@param 	form [Æû]
 *	@param 	data [µ¥ÀÌÅÍ´Â ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ¹è¿­·Î Å°:°ªÀÇ ÇüÅÂ¿©¾ß ÇÕ´Ï´Ù!]
 *	@see   	ebslang.com.uril/AutoFormScript.java ÆÄÀÏ°ú ÇÔ²² »ç¿ëÇÕ´Ï´Ù.
 *  @ÁÖÀÇ :  	µ¥ÀÌÅÍ¿¡ µé¾î°¡´Â °ªÁß textarea¿¡ µé¾î°¡°í, ¶óÀÎºê·¹ÀÌÅ©(¿£ÅÍ °ªÀº) \nÀ¸·Î ÃÊ±âÈ­ ÇØ¾ß ÇÑ´Ù.
 */
function autoFormInput(form, data) {
	if (typeof(form) == 'undefined') return;
	var el,nm,i,j,x;
	for (i=0;i < form.elements.length;i++) {
		el = form.elements[i];
		nm = el.name;
		if (data[nm] != undefined) {
			switch (el.tagName) {
				case "SELECT" :
					if (data[nm]) {
						var tmp = data[nm].split(",");
						if (form.elements[nm].length > 1 && tmp.length > 1) {
							for (j=0; j<el.length; j++) {
								if (el == form.elements[nm][j] && typeof(tmp[j]) != 'undefined') {
									for (x=0;x<el.options.length;x++) {
										if (el.options[x].value == tmp[j]) {
											el.selectedIndex = x; break;
										}
									}
								}
							}
						}else{
							for (j=0;j<el.options.length;j++) {
								if (el.options[j].value == data[nm]) {
									el.selectedIndex = j; break;
								}
							}
						}
					}
					break;
				default :
					switch (el.type) {
						case "checkbox" :
							var xtmp = data[nm].split(",");
							for (x=0;x<xtmp.length;x++) {
								if (el.value == xtmp[x].trim()) el.checked = true;
							}
							break;
						case "radio" :
							if (el.value == data[nm]) el.checked = true;
							break;
						case "file" :
							break;
						default :
							el.value = data[nm];
							break;
					}
					break;
			}
		}
	}
}


/**
 *	SELECT TYPE ÀÇ Å°°ªÀ» ±¸ºÐÀÚ·Î ³Ñ°Ü ÁÝ´Ï´Ù.
 *	@param	el	SELECT Type element
 *	@param	separator	String
 */
function selectGetStringKeys (el,separator) {
	if (typeof(el) == 'undefined' || el.tagName != "SELECT") {
		alert("\n[ERROR] selectGetStringKeys(el[,separator])\n\nRequire el! Or el wasn't SELECT Type!");
		return;
	}
	if (typeof(separator) == 'undefined') separator = ",";
	var retVal = "";
	for (var i=0; i < el.length ; i++) {
		if (retVal != "") retVal += separator;
		retVal += el.options[i].value;
	}
	return retVal;
}


/**
 *	SELECT TYPEÀÇ ¿É¼ÇÀÇ À§Ä¡¸¦ ÀÌµ¿½ÃÅµ´Ï´Ù.
 *	@param	el	SELECT Type element
 *	@param	flag	String [top,bottom,up,down]
 */
function selectMoveItem(el,flag){
	if (typeof(el) == 'undefined' || el.tagName != "SELECT") {
		alert("\n[ERROR] selectMoveItem(el,flag)\n\nRequire el! Or el wasn't SELECT Type!");
		return;
	}
	if (typeof(flag) == 'undefined' || !(flag.toLowerCase() == "top" || flag.toLowerCase() == "bottom" || flag.toLowerCase() == "up" || flag.toLowerCase() == "down")) {
		alert("\n[ERROR] selectMoveItem(el,flag)\n\nRequire flag! Or flag not in[top,bottom,up,down]!");
		return;
	}
	if(el.selectedIndex == -1){
		alert("ÀÌµ¿À» ¿øÇÏ´Â Ç×¸ñÀ» ¼±ÅÃÇØÁÖ¼¼¿ä!");
		return;
	}
	if (flag == "down") {
		if(el.selectedIndex == el.length-1) return;
		selectMoveStep(el,el.selectedIndex+1);
	}else if(flag == "up") {
		if(el.selectedIndex == 0) return;
		selectMoveStep(el,el.selectedIndex-1);
	}else if(flag == "top") {
		selectMoveTop(el);
	}else if(flag == "bottom") {
		selectMoveBottom(el);
	}
}

/**
 *	SELECT TYPEÀÇ ¿É¼ÇÀÇ À§Ä¡¸¦ ÃÖ»óÀ§·Î ÀÌµ¿½ÃÅµ´Ï´Ù.
 *	@param	el	SELECT Type element
 *	@see	selectMoveItem()
 */
function selectMoveTop(el){
	if (typeof(el) == 'undefined' || el.tagName != "SELECT") {
		alert("\n[ERROR] selectMoveTop(el)\n\nRequire el! Or el wasn't SELECT Type!");
		return;
	}
	var option = new Option(el.options[el.selectedIndex].text,el.options[el.selectedIndex].value,false,true);
	el.options[el.selectedIndex] = null;
	for(i = el.length-1;i>=0;i--){
		var tmp = new Option(el.options[i].text,el.options[i].value);
		el.options[i+1] = tmp;
	}
	el.options[0] = option;
}

/**
 *	SELECT TYPEÀÇ ¿É¼ÇÀÇ À§Ä¡¸¦ ÃÖÇÏÀ§·Î ÀÌµ¿½ÃÅµ´Ï´Ù.
 *	@param	el	SELECT Type element
 *	@see	selectMoveItem()
 */
function selectMoveBottom(el){
	if (typeof(el) == 'undefined' || el.tagName != "SELECT") {
		alert("\n[ERROR] selectMoveBottom(el)\n\nRequire el! Or el wasn't SELECT Type!");
		return;
	}
	var option = new Option(el.options[el.selectedIndex].text,el.options[el.selectedIndex].value,false,true);
	el.options[el.selectedIndex] = null;
	el.options[el.length] = option;
}

/**
 *	SELECT TYPEÀÇ ¿É¼ÇÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÑ À§Ä¡·Î ÀÌµ¿½ÃÅµ´Ï´Ù.
 *	@param	el	SELECT Type element
 *	@param	to	int index
 *	@see	selectMoveItem()
 */
function selectMoveStep(el,to){
	if (typeof(el) == 'undefined' || el.tagName != "SELECT") {
		alert("\n[ERROR] selectMoveStep(el)\n\nRequire el! Or el wasn't SELECT Type!");
		return;
	}
	if (typeof(to) == 'undefined' || isNaN(to)) {
		alert("\n[ERROR] selectMoveStep(el,to)\n\nRequire to! to not numeric");
		return;
	}
	if (el.length -1 < to ) return;
	var i = el.selectedIndex;
	var option = new Option(el.options[i].text,el.options[i].value,false,true);
	var option2 = new Option(el.options[to].text,el.options[to].value);
	el.options[to] = option;
	el.options[i] = option2;
}

/**
 *	SELECT¿¡ ¿É¼ÇÀ» Ãß°¡ÇÏ´Âµ¥ »ó´Ü¿¡ Ãß°¡¸¦ ÇÕ´Ï´Ù.
 *	@param	el	SELECT Type element
 *	@param	val	value
 *	@param	text
 *	@param	sel	boolean : ¼±ÅÃ¿©ºÎ
 */
function selectAddTop(el,val,text,sel) {
	if (typeof(el) == 'undefined' || el.tagName != "SELECT") {
		alert("\n[ERROR] selectAddTop(el)\n\nRequire el! Or el wasn't SELECT Type!");
		return;
	}
	if (typeof(val) == 'undefined') val = "";
	if (typeof(text) == 'undefined') text = "";
	if (typeof(sel) == 'undefined' || !(sel == true || sel == false)) sel = false;
	el.options[el.length] = new Option(text,val);
	el.selectedIndex = el.options.length - 1;
	selectMoveTop(el);
	if (sel == false) el.selectedIndex = null;
}


/**
 *	Hashtable Class
 *	ÀÚ¹Ù½ºÅ©¸³Æ® ÇØ½ÃÅ×ÀÌºí
 */
function Hashtable() {
	this.length = 0;
	this.keys = new Array();
	this.values = new Array();

	this.add = function (key,value) {
		if (typeof(key) == 'undefined' && typeof(value) == 'undefined') return this.error("missing key,value reference 'HashTalbe.add(key,value)'");
		else if (typeof(value) == 'undefined') {
			value = key;
			key = this.length;
		}
		var index = this.isKey(key);
		if (index != -1) {
			this.values[index] = value;
		}else{
			this.keys[this.length] = key;
			this.values[this.length] = value;
			this.length += 1;
		}
	}
	this.remove = function (key) {
		if (typeof(key) == 'undefined') return this.error("missing key reference 'HashTalbe.remove(key)'");
		var index = this.isKey(key);
		if (index == -1) return;
		else{
			this.keys.remove(index);
			this.values.remove(index);
			this.length--;
		}
	}
	this.removeAll = function () {
		this.length = 0;
		this.keys.length = 0;
		this.values.length = 0;
	}
	this.isEmpty = function () {
		if (this.length == 0) return true;
		else return false;
	}

	/**
	 *	¿äÃ»ÇÑ Å°°ªÀÌ Á¸ÀçÇÏ´ÂÁö ¿©ºÎ¿Í Å°ÀÇ ÀÎµ¦½º¸¦ ¸®ÅÏ ÇÕ´Ï´Ù.
	 *	@param	key
	 *	@return index
	 *	@ÁÖÀÇ : Å°°ªÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é, -1 À» ¸®ÅÏ ÇÕ´Ï´Ù.
	 */
	this.isKey = function (key) {
		var retVal = -1;
		if (typeof(key) == 'undefined') return this.error("missing key reference 'HashTalbe.isKey(key)'");
		if (this.length == 0) return retVal;
		for (var i=0; i < this.length ;i++ ) {
			if (this.keys[i] == key) {
				retVal = i;
				break;
			}
		}
		return retVal;
	}

	/**
	 *	¿äÃ»ÇÑ Å°¿¡´ëÇÑ °ªÀ» ¸®ÅÏ ÇÕ´Ï´Ù.
	 *	@param	key
	 *	@return value
	 *	@ÁÖÀÇ : Á¸ÀçÇÏÁö ¾Ê´Â Å°¸¦ ¿äÃ»ÇÏ¸é, undefined¸¦ ¸®ÅÏ ÇÕ´Ï´Ù.
	 */
	this.get = function (key) {
		if (typeof(key) == 'undefined') return this.error("missing key reference 'HashTalbe.get(key)'");
		if (this.length == 0) return;
		var index = this.isKey(key);
		if (index == -1) return;
		else return this.values[index];
	}
	this.size = function () {
		return this.length;
	}
	this.getKeys = function () {
		return this.keys;
	}
	this.getValues = function () {
		return this.values;
	}
	this.toString = function () {
		var retVal = "";
		for(var i=0;i<this.length;i++) {
			if (i != 0) retVal +=" ,";
			retVal += this.keys[i] + "=" + this.values[i];
		}
		return "Neooz Javascript Hashtable V2006-06-09 : {"+retVal+"}";
	}
	this.copyFrom = function (org) {
		if (typeof(org) == 'undefined' || org.constructor != "Hashtable")
			return this.error("org is not Hashtable!! reference 'HashTalbe.copyFrom(org)'");

		for(var i=0;i<org.length;i++) {
			this.add(org.keys[i],org.values[i]);
		}
	}
	this.constructor = "Hashtable";
	this.fromSelect = function (el) {
		if (typeof(el) == 'undefined' || typeof(el.tagName) == 'undefined' || el.tagName != "SELECT")
			return this.error("el is not SELECT field!! reference 'HashTalbe.fromSelect(el)'");

		for (var i=0; i<el.options.length ;i++) {
			if (el.options[i].value != "") {
				this.add(el.options[i].value,el.options[i].text);
			}
		}
	}
	this.toSelect = function (el, val) {
		if (typeof(el) == 'undefined' || typeof(el.tagName) == 'undefined' || el.tagName != "SELECT")
			return this.error("el is not SELECT field!! reference 'HashTalbe.toSelect(el)'");

		while (el.length = 0) el.options[0] = null;
		for (var i=0; i< this.length ;i++) {
			var option = new Option(this.values[i],this.keys[i]);
			el.options[i] = option;
			if (typeof(val) != 'undefined' && val != null) {
				if (this.keys[i] == (val+"")) el.selectedIndex = i;
			}
		}
	}
	this.error = function (msg) {
		if (typeof(msg) == 'undefined') return;
		alert("\nERROR : "+msg+"\n");
		return;
	}
}