// ExtendedSelectManagerÀÇ instance. Global°´Ã¼.
var SelectEXT;
/************************* ExtendedSelectManager *************************/
/**
 * ±âº»ÀûÀ¸·Î select°´Ã¼¿Í °ÅÀÇ µ¿ÀÏÇÏ°Ô µ¿ÀÛÇÑ´Ù.
 * DOC¿¡¼­ÀÇ selectÀÇ °´Ã¼ÀÇ ÁÖ¿ä ¼Ó¼º¿¡ ´ëÇÑ retrive´Â Àß Áö¿øÇÏÁö¸¸ setÀº Áö¿ø µÇÁö ¾Ê´Â´Ù.
 * setValue(), setSelectedIndex()¸¦ Âü°íÇÒ °Í.
 */

function ExtendedSelectManager() {
	this.isIE = window.navigator.userAgent.indexOf("MSIE") > 0;
	this.isNS = window.navigator.appName.indexOf("Netscape") == 0;
	this.browserVersion = parseFloat(window.navigator.appVersion);
	this.currentSObj == null;	// ÇöÀç ÁÖ¸ñÇÏ°í ÀÖ´Â select°´Ã¼.
	this.closeTimeOut = 1000;	// ¸¶¿ì½º°¡ select¿¡¼­ ¹þ¾î³µÀ»¶§ ÆîÃ³Áø ¸®½ºÆ®¸¦ ¼û±â±â±îÁöÀÇ ½Ã°£. ¹Ð¸®ÃÊ.
	this.selectes = new Array();	// select°´Ã¼¸¦ ´ã°í ÀÖ´Â ¸®½ºÆ®. key: select°´Ã¼ÀÇ id, value: select°´Ã¼.
	this.cursorName = this.isIE && this.browserVersion < 6 ? "hand" : "pointer";
	this.fontSize = 12;	// ±ÛÀÚ ±âº» Å©±â.
	this.lineHeight = 14;	// ±ÛÀÚ ±âº» Å©±â.
	this.unitSize = 17;	// ±âº» Å©±â. ´ÜÀ§ px. ex) optionÀÇ ³ôÀÌ.
	this.defaultLineCount = 8;	// ÆîÃ³Áú ¸®½ºÆ®¿¡ º¸¿©Áú optionÀÇ ±âº» °³¼ö.
	this.defaultWidth = 100;	// ÆîÃ³Áú ¸®½ºÆ®ÀÇ ±âº» ³Êºñ. ´ÜÀ§ px.
//	this.defaultBGColor = "#F5F2EB";	 ±âº» ¹è°æ»ö.
	this.defaultBGColor = "#F0F0F0";	// ±âº» ¹è°æ»ö 2005-09-±³Ã¼
//	this.defaultFontColor = "#FFFFFF";
	this.defaultFontColor = "#A9A9A9";
//	this.defaultArrowColor = "#C5BDA6"; // ±âº» ¹è°æ»ö 2005-09-±³Ã¼

//	this.arrowImage = "http://ir.imbc.com/2006/images/btn_down.gif"; 



//SS_ENV.CR.ReverseBackground = '#F5F2EB';
//SS_ENV.CR.ReverseText = '#969696';
//SS_ENV.CR.Border = '#BABABA';
//SS_ENV.CR.BorderActive = '#BDBEBE';
//SS_ENV.ImgPrefix = 'http://ir.imbc.com/2006/images/';
//SS_ENV.DefaultHeight = '17px';
//SS_ENV.ButtonWidth = '16px';
		
		




	this.targets = new Array();
	this.appendTarget = function (sObjId) {
		this.targets[this.targets.length] = sObjId;
	}
	this.changeAll = function (sObjId) {
		if(this.targets.length > 0) {
			for(var i = 0; i < this.targets.length; i++)
				this.change(this.targets[i]);
		}
	}
	/**
	 * ³ë¸ÖÇÑ select¸¦ ExtendedSelect·Î ¹Ù²Ù´Â	.
	 * @public
	 * @param sObjId select°´Ã¼ÀÇ id.
	 */
	this.change = function (sObjId) {
		if(true) {//this.isIE) {
			var sObj = document.getElementById(sObjId);
			if(sObj) {
				var extSelObj = new ExtendedSelect(sObj);
				this.selectes[sObjId] = extSelObj;
				sObj.parentNode.replaceChild(extSelObj.create(), sObj);
			}
		} else {
		}
	}
	/**
	 * ExtendedSelectÀÇ °ªÀ» º¯°æÇÏ´Â ¸Þ¼Òµå.
	 * @public
	 * @param sObjId select°´Ã¼ÀÇ id.
	 * @param value º¯°æÇÏ°íÀÚ ÇÏ´Â °ª.
	 */
	this.setValue = function (sObjId, value) {
		if(this.isIE && this.selectes[sObjId]) {
			this.selectes[sObjId].setValue(value);
		} else {
			var sObj = document.getElementById(sObjId);
			if(sObj) sObj.value = value;
		}
	}
	/**
	 * ExtendedSelectÀÇ selectedIndex¸¦ º¯°æÇÏ´Â ¸Þ¼Òµå.
	 * @public
	 * @param sObjId select°´Ã¼ÀÇ id.
	 * @param index º¯°æÇÏ°íÀÚ ÇÏ´Â index.
	 */
	this.setSelectedIndex = function (sObjId, index) {
		if(this.isIE && this.selectes[sObjId]) {
			this.selectes[sObjId].setSelectedIndex(index);
		} else {
			var sObj = document.getElementById(sObjId);
			if(sObj) sObj.selectedIndex = index;
		}
	}
	/**
	 * ExtendedSelect¿¡ ¼³Á¤µÈ ÇöÀç °ªÀ» °¡Á®¿À´Â ¸Þ¼Òµå.
	 * @public
	 * @param sObjId select°´Ã¼ÀÇ id.
	 */
	this.getValue = function (sObjId) {
		if(this.isIE && this.selectes[sObjId]) {
			return this.selectes[sObjId].getValue();
		} else {
			var sObj = document.getElementById(sObjId);
			if(sObj) return sObj.value;
		}
	}
	/**
	 * ÇöÀç ÁÖ¸ñÇÏ°í ÀÖ´Â ExtendedSelect¸¦ ±â¾ïÇØ µÎ±â À§ÇÑ ¸Þ¼Òµå.
	 * @private
	 * @param sObj ÇöÀç ÁÖ¸ñÇÏ°í ÀÖ´Â ExtendedSelect°´Ã¼.
	 */
	this.setShowed = function (sObj) {
		if(this.currentSObj && this.currentSObj != sObj) {
			window.clearTimeout(this.currentSObj.closeTimer);
			this.currentSObj.close();
		}
		this.currentSObj = sObj;
	}
	/**
	 * ÇöÀç ÁÖ¸ñÇÏ°í ÀÖ´Â ExtendedSelect°´Ã¼ÀÇ ÆîÃ³Áø ¸®½ºÆ®¸¦ ¼û±â´Â ¸Þ¼Òµå.
	 * @private
	 */
	this.close = function () {
		if(SelectEXT.currentSObj != null)
			SelectEXT.currentSObj.close();
	}
// style °ü·Ã ¸Þ¼Òµåµé.
	// Á¦¸ñ¿µ¿ªÀÇ style.
	this.applyTitleStyle = function (title, sObj) {
		title.style.color = sObj.fontColor;
		title.style.fontSize = SelectEXT.fontSize + "px";
		title.style.textIndent = "3px";
		title.style.paddingTop = "2px";
		title.style.height = SelectEXT.unitSize + "px";
		title.style.lineHeight = SelectEXT.lineHeight + "px";
		title.style.overflow = "hidden";
		title.noWrap = true;


//SS_ENV.CR.Border = '#BABABA';
//SS_ENV.CR.BorderActive = '#BDBEBE';
//SS_ENV.ImgPrefix = 'http://ir.imbc.com/2006/images/';
//SS_ENV.DefaultHeight = '17px';
//SS_ENV.ButtonWidth = '16px';


//		title.style.borderColor = "#BDBEBE";
//		title.style.borderWidth  = "1px";	// ÀÌ °ªÀº º¯°æ ÇÏÁö ¸»°Í. //
//		title.style.borderStyle = "solid";

	}
	// ¸®½ºÆ®ÀÇ style.
	this.applyListStyle = function (listObj, sObj) {
		listObj.style.fontSize = SelectEXT.fontSize + "px";
		listObj.style.lineHeight = SelectEXT.lineHeight + "px";
		if(SelectEXT.isIE) {
			listObj.style.overflowX = "hidden";
			listObj.style.overflowY = "auto";
		} else {
			listObj.style.overflow = "auto";
		}

		listObj.style.zIndex = 1;
		listObj.style.borderColor = "#F0F0F0";
		listObj.style.borderWidth  = "0px";	// ÀÌ °ªÀº º¯°æ ÇÏÁö ¸»°Í. //
		listObj.style.borderStyle = "solid";
		listObj.style.color = SelectEXT.defaultFontColor;
		if (true) {//this.isIE && this.browserVersion >= 5.5) {
			listObj.style.scrollbarFaceColor = sObj.arrowColor;
			listObj.style.scrollbarHighlightColor = "#F0F0F0";
			listObj.style.scrollbarShadowColor = "#F0F0F0";
			listObj.style.scrollbar3dLightColor = sObj.bgColor;
			listObj.style.scrollbarArrowColor = sObj.fontColor;
			listObj.style.scrollbarTrackColor = sObj.bgColor;
			listObj.style.scrollbarDarkShadowColor = sObj.bgColor;
		}
	}
	// optGroupÀÇ style.
	this.applyOptGroupStyle = function (optGroup, sObj) {
		optGroup.style.color = sObj.fontColor;
		optGroup.style.textIndent = "3px";
		optGroup.style.paddingTop = "2px";
		optGroup.style.height = SelectEXT.unitSize + "px";
		optGroup.style.lineHeight = SelectEXT.lineHeight + "px";
		optGroup.style.fontSize = SelectEXT.fontSize + "px";
		optGroup.style.fontStyle = "italic";
		optGroup.style.fontStyle = "italic";
		optGroup.style.fontWeight = "bold";
		optGroup.noWrap = true;
	}
	// optionÀÇ style.
	this.applyOptionStyle = function (option, sObj) {
		option.style.color = sObj.fontColor;
		option.style.cursor = SelectEXT.cursorName;
		option.style.fontSize = SelectEXT.fontSize + "px";
		option.style.textIndent = "3px";
		option.style.paddingTop = "2px";
		option.style.height = SelectEXT.unitSize + "px";
		option.style.lineHeight = SelectEXT.lineHeight + "px";
		option.noWrap = true;
	}
}
SelectEXT = new ExtendedSelectManager();

/************************* ExtendedSelect *************************/
/**
 * id: document.getElementById()·Î °¡Á®¿Ã¼ö ÀÖ´Â select°´Ã¼ÀÇ id. uniqueÇØ¾ß ÇÔ.
 * name: formÀ¸·Î ³Ñ°Å°¥¶§¿¡ »ç¿ëµÇ´Â selectÀÇ ÀÌ¸§. (³»ºÎÀûÀ¸·Î hiddenÀ¸·Î ³Ñ°ÜÁÜ.)
 * direction: ¸®½ºÆ®°¡ ÆîÃ³Áú ¹æÇâ. "up", "down" default´Â "down".
 * width: Á¦¸ñ¿µ¿ªÀÇ °¡·Î±æÀÌ. default´Â SelectEXT.defaultWidth
 * listWidth: ¸®½ºÆ®¿µ¿ªÀÇ °¡·Î±æÀÌ. default´Â Á¦¸ñ¿µ¿ªÀÇ °¡·Î±æÀÌ.
 * lineCount: ¸®½ºÆ®°¡ ÆîÃÄÁú¶§ º¸¿©Áú optionÀÇ °³¼ö. ³ôÀÌ¸¦ °áÁ¤ÇÔ. default´Â 8.
 * arrowImage: Á¦¸ñ¿µ¿ªÀÇ È­»ìÇ¥ ÀÌ¹ÌÁö URL. ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ»¶§¿¡´Â ¡å·Î »ý¼ºÇÔ.
 * style {
 * 	- width: Á¦¸ñ¿µ¿ªÀÇ °¡·Î±æÀÌ. À§ÀÇ width°ªÀ» µ¤¾î¾º¿ò.
 * 	- background-color: selectÀÇ ¹è°æ»ö. default´Â SelectEXT.defaultBGColor
 * }
 */
function ExtendedSelect(sObj) {
	this.id = sObj.id;	// id
	this.name = sObj.name;
	this.value;			// ExtendedSelect¿¡ ¼³Á¤µÈ °ª.
	this.text;			// ExtendedSelect¿¡ ¼³Á¤µÈ °ª¿¡ ÇØ´çÇÏ´Â ÅØ½ºÆ®.
	this.direction = sObj.getAttribute("direction");	// ¸®½ºÆ®°¡ ÆîÃÄÁú ¹æÇâ. up, down À» Áö¿ø. ±âº»°ªÀº down.
	this.divAll = document.createElement("DIV");	// ÀüÃ¼ ±¸Á¶¸¦ °¡Áö´Â DIV.
	this.titleObj;	// select¿¡ ±âº»À¸·Î º¸¿©Áö´Â ÅØ½ºÆ® ³ëµå.
	this.hiddenObj;	// formÀ» ÀÌ¿ëÇÏ¿© µ¥ÀÌÅ¸°¡ ³Ñ¾î°¥¶§ ÇÊ¿äÇÑ input(hidden) °´Ã¼.
	this.listObj;	// selectÀÇ listºÎºÐÀ» ±¸¼ºÇÏ´Â div ³ëµå.

	this.bgColor = sObj.getAttribute("bgColor") ? sObj.getAttribute("bgColor") : SelectEXT.defaultBGColor;
	if(sObj.style.backgroundColor) this.bgColor = sObj.style.backgroundColor;
	this.fontColor = sObj.getAttribute("fontColor") ? sObj.getAttribute("fontColor") : SelectEXT.defaultFontColor;
	if(sObj.style.color) this.fontColor = sObj.style.color;
	this.arrowColor = sObj.getAttribute("arrowColor") ? sObj.getAttribute("arrowColor") : SelectEXT.defaultArrowColor;

	this.width = sObj.getAttribute("width") ? parseInt(sObj.getAttribute("width"), 10) : SelectEXT.defaultWidth;
	if(parseInt(sObj.style.width, 10) > 0) this.width = parseInt(sObj.style.width, 10);

	this.listWidth = sObj.getAttribute("listWidth") ? parseInt(sObj.getAttribute("listWidth"), 10) : this.width;

	if(sObj.getAttribute("lineCount"))
		this.height = parseInt(sObj.getAttribute("lineCount"), 10) * SelectEXT.unitSize + 2;
	else if(sObj.options.length < SelectEXT.defaultLineCount)
		this.height = sObj.options.length * SelectEXT.unitSize + 2;
	else
		this.height = SelectEXT.defaultLineCount * SelectEXT.unitSize + 2;

	this.arrowImage = sObj.getAttribute("arrowImage");

	this.children = new Array();	// optionÀÌ³ª optGroupÀ» °¡Áö´Â ¸®½ºÆ®.
	this.options = new Array();	// option¸¸À» °¡Áö´Â ¸®½ºÆ®.
	this.selectedIndex = -1;	// ÇöÀç ¼±ÅÃµÈ optionÀÇ ¹øÈ£.
	this.onChange = sObj.onchange;	// selectÀÇ onChange ÀÌº¥Æ® ÇÚµé·¯¸¦ °¡Á®¿È.

	/**
	 * DOMÀ» ÀÌ¿ëÇÏ¿© º¸¿©ÁÖ±â À§ÇÑ °´Ã¼µéÀ» »ý¼ºÇÏ´Â ¸Þ¼Òµå.
	 */
	this.create = function () {
		// option ¶Ç´Â optGroupÀÌ µé¾î°¥ div.
		this.listObj = document.createElement("DIV");
		this.listObj.selObject = this;
		this.listObj.onmouseover = this.onMouseOver;
		this.listObj.onmouseout = this.onMouseOut;
		this.listObj.style.background = this.bgColor;
		this.listObj.style.visibility = "hidden";
		this.listObj.style.position = "absolute";
		this.listObj.style.width = (this.width + 2) + "px";
		this.listObj.style.height = this.height + "px";
		this.listObj.style.left = "0px";
		this.listObj.style.top = "-" + this.height +"px";
		if(this.direction)
		switch(this.direction) {
			case "down":
				this.listObj.style.top = (this.height) + "px";
				break;
			case "up":
				break;
			default:
				break;
		}
		for(var i = 0; i < this.children.length; i++) // ÇÏÀ§ÀÇ option ¶Ç´Â optGroupÀ» ¸¸µé¾î¼­ ºÙÀÓ.
			this.listObj.appendChild(this.children[i].create());
		SelectEXT.applyListStyle(this.listObj, this);

		var tableObj = document.createElement("TABLE");
		tableObj.cellSpacing = 0;
		tableObj.cellPadding = 0;
		tableObj.border = 0;
		tableObj.borderStyle = "solid";
		tableObj.width = this.width + "px";
		tableObj.style.height = (SelectEXT.unitSize + 2) + "px";
		tableObj.bgColor = "#F0F0F0";
		
		var tr = tableObj.insertRow(0);
		tr.selObject = this;
		tr.style.cursor = SelectEXT.cursorName;

		// Á¦¸ñ ¿µ¿ªÀÌ µé¾î°¥ div.
		var div = document.createElement("DIV");
		div.selObject = this;
		div.style.width = (this.width - SelectEXT.unitSize + 2) + "px";
		div.style.height = SelectEXT.unitSize + "px";
		div.style.background = this.bgColor;
		this.titleObj = document.createTextNode("¼±ÅÃÇÏ¼¼¿ä");
		div.appendChild(this.titleObj);
		var td = tr.insertCell(0);
		td.align = "left";
		td.vAlign = "middle";
		td.style.width = (this.width - SelectEXT.unitSize + 2) + "px";
		td.style.color = this.listObj.style.color;
		SelectEXT.applyTitleStyle(div, this);
		td.appendChild(div);
		// ¾Æ·¡¹æÇâ È­»ìÇ¥ ÀÌ¹ÌÁö.
		var arrow;
		if(this.arrowImage) {
			arrow = new Image();
			arrow.src = this.arrowImage;
			arrow.border = 0;
			arrow.width = SelectEXT.unitSize;
			arrow.height = SelectEXT.unitSize;

		} else {
			arrow = document.createElement("DIV");
			arrow.style.fontSize = SelectEXT.fontSize + "px";
			arrow.style.paddingTop = "2px";
			arrow.style.background = this.listObj.style.scrollbarFaceColor;
			arrow.style.color = this.listObj.style.scrollbarArrowColor;
			arrow.style.width = SelectEXT.unitSize + "px";
			arrow.style.height = SelectEXT.unitSize + "px";
			arrow.appendChild(document.createTextNode("¡å"));
		}
		arrow.selObject = this;
		td = tr.insertCell(1);
		td.align = "center";
		td.vAlign = "middle";
//		title.style.borderColor = "#BDBEBE";
//		title.style.borderWidth  = "1px";	// ÀÌ °ªÀº º¯°æ ÇÏÁö ¸»°Í. //
//		title.style.borderStyle = "solid";



//		td.width = (SelectEXT.unitSize + 2) + "px";
//		td.height = (SelectEXT.unitSize + 2) + "px";
//		td.style.backgroundColor = this.arrowColor;
		td.appendChild(arrow);

		tr.onclick = this.onClick;
		tr.onmouseover = this.onMouseOver;
		tr.onmouseout = this.onMouseOut;

		// »ý¼ºÇÏ¸é¼­ ¼ÂÆÃÇÒ °ª°ú º¸¿©ÁÙ ÅØ½ºÆ®¸¦ °è»ê.
		if(this.selectedIndex == -1) {
			this.selectedIndex = 0;
		}
		if(this.options[this.selectedIndex]) {
			this.value = this.options[this.selectedIndex].value;
			this.text = this.options[this.selectedIndex].text;
		}
		this.titleObj.nodeValue = this.text;
		this.titleObj.parentNode.title = this.text;
		if(SelectEXT.isIE) {
			this.hiddenObj = document.createElement("<input name='"+this.name+"'>");	
			this.hiddenObj.selObject = this;
			this.hiddenObj.onpropertychange = this.onValueChange;
		} else {
			this.hiddenObj = document.createElement("INPUT");	
			this.hiddenObj.name = this.name;
		}
		this.hiddenObj.type = "hidden";
		this.hiddenObj.value = this.value;
		this.hiddenObj.text = this.text;
		this.hiddenObj.selectedIndex = this.selectedIndex;
		this.hiddenObj.options = this.options;

		this.divAll.id = this.id;
		this.divAll.style.display = "inline";
		this.divAll.style.position = "relative";
		this.divAll.style.backgroundColor = this.bgColor;
		this.divAll.appendChild(tableObj);
		this.divAll.appendChild(this.listObj);
		this.divAll.appendChild(this.hiddenObj);

		// »ý¼ºµÈ tableÀ» return.
		return this.divAll;
	}
	this.onClick = function (e) {
		var obj = e ? e.target : window.event.srcElement;
		if(obj && obj.selObject) obj.selObject.onClickProc();
	}
	this.onClickProc = function () {
		this.toggleShow();
	}
	this.onMouseOver = function (e) {
		var obj = e ? e.target : window.event.srcElement;
		if(obj && obj.selObject) obj.selObject.onMouseOverProc();
	}
	this.onMouseOverProc = function () {
		this.stopClose();
	}
	this.onMouseOut = function (e) {
		var obj = e ? e.target : window.event.srcElement;
		if(obj && obj.selObject) obj.selObject.onMouseOutProc();
	}
	this.onMouseOutProc = function () {
		this.startClose();
	}
	this.onValueChange = function () {	// IE only...
		var e = window.event;
		var obj = e.srcElement;
		if(obj && obj.selObject) {
			var sObj = obj.selObject;
			switch(e.propertyName) {
				case "value":
					if(sObj.value != obj.value) sObj.setValue(obj.value);
					break;
				case "text":
					if(sObj.text != obj.text) sObj.setText(obj.text);
					break;
				case "selectedIndex":
					if(sObj.selectedIndex != obj.selectedIndex) sObj.setSelectedIndex(obj.selectedIndex);
					break;
				case "style.display":
					if(sObj.divAll.style.display != obj.style.display) sObj.divAll.style.display = obj.style.display;
					break;
				case "style.visibility":
					if(sObj.divAll.style.visibility != obj.style.visibility) sObj.divAll.style.visibility = obj.style.visibility;
					break;
			}
		}
	}
	/**
	 * ÀÌ ExtendedSelect¸¦ ¹þ¾î³ª´Â °æ¿ì ÆîÃÄÀú ÀÖ´ø ¸®½ºÆ®¸¦ ¼û±â±â À§ÇÑ timer¸¦ ÀÛµ¿½ÃÅ°´Â ¸Þ¼Òµå.
	 */
	this.startClose = function () {
		this.stopClose();
		if(this.listObj.style.visibility == "visible")
			this.closeTimer = window.setTimeout(SelectEXT.close, SelectEXT.closeTimeOut);
	}
	/**
	 * ÀÏÁ¤ ½Ã°£ ÀÌ³»(SelectEXT.closeTimeOut)¿¡ ´Ù½Ã µé¾î¿ÔÀ»¶§ timer¸¦ ¸ØÃß°Ô ÇÏ´Â ¸Þ¼Òµå.
	 */
	this.stopClose = function () {
		if(this.closeTimer != null) {
			window.clearTimeout(this.closeTimer);
			this.closeTimer = null;
		}
	}
	/**
	 * ÆîÃÄÁø ¸®½ºÆ®¸¦ ¼û±â´Â ¸Þ¼Òµå.
	 */
	this.close = function () {
		this.listObj.style.visibility = "hidden";
	}
	/**
	 * ¸®½ºÆ®¸¦ ÆîÄ¡´Â ¸Þ¼Òµå.
	 */
	this.show = function () {
		this.listObj.style.visibility = "visible";
		if(this.selectedIndex >= 0 && this.selectedIndex < this.options.length) {
			this.options[this.selectedIndex].onMouseOverProc();
			if(SelectEXT.isIE) this.options[this.selectedIndex].divObj.focus();
		}
		// ÀÌ ExtendedSelect°¡ ÁÖ¸ñ¹Þ°í ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇØµÒ.
		SelectEXT.setShowed(this);
	}
	/**
	 * ExtendedSelect¸¦ Å¬¸¯ÇÏ´Â °æ¿ì ÆîÄ§/¼û±èÀ» ÇÏ±â À§ÇÑ ¸Þ¼Òµå.
	 */
	this.toggleShow = function () {
		if(this.listObj.style.visibility == "visible") this.close();
		else this.show();
	}
	/**
	 * °ªÀ» ¼³Á¤ÇÏ´Â ¸Þ¼Òµå.
	 */
	this.setValue = function (value) {
		var opt = null;
		if(this.selectedIndex >= 0 && this.selectedIndex < this.options.length)
			this.options[this.selectedIndex].onMouseOutProc();
		var founded = false;
		for(var i = 0; i < this.options.length; i++) {
			opt = this.options[i];
			if(opt.value == value) {
				opt.selected = true;
				this.selectedIndex = i;
				founded = true;
			} else {
				opt.selected = false;
			}
		}
		if(!founded) this.selectedIndex = -1;
		this.refresh();
	}
	this.setText = function (text) {
		var opt = null;
		if(this.selectedIndex >= 0 && this.selectedIndex < this.options.length)
			this.options[this.selectedIndex].onMouseOutProc();
		var founded = false;
		for(var i = 0; i < this.options.length; i++) {
			opt = this.options[i];
			if(opt.text == text) {
				opt.selected = true;
				this.selectedIndex = i;
				founded = true;
			} else {
				opt.selected = false;
			}
		}
		if(!founded) this.selectedIndex = -1;
		this.refresh();
	}
	this.setSelectedIndex = function (index) {
		if(index >= 0 && index < this.options.length)
			this.selectedIndex = index;
		else if(index == -1)
			this.selectedIndex = -1;
		this.refresh();
	}
	/**
	 * Á¦¸ñ ¿µ¿ªÀ» ´Ù½Ã »Ñ·ÁÁÖ´Â ¸Þ¼Òµå.
	 */
	this.refresh = function () {
		if(this.selectedIndex >= 0 && this.selectedIndex < this.options.length) {
			if(this.value != this.options[this.selectedIndex].value) {
				this.value = this.options[this.selectedIndex].value;
				this.hiddenObj.value = this.value;
				this.hiddenObj.selectedIndex = this.selectedIndex;
				this.text = this.options[this.selectedIndex].text;
				this.titleObj.nodeValue = this.text;
				this.titleObj.parentNode.title = this.text;
				this.hiddenObj.text = this.text;
				// °ªÀÌ º¯°æµÈ °æ¿ìÀÌ¹Ç·Î select¿¡ ¼³Á¤µÇ¾îÀÖ´Â onChangeÀÌº¥Æ® ÇÚµé·¯¸¦ È£ÃâÇÑ´Ù.
				if(this.onChange) this.onChange();
			}
		} else if(this.selectedIndex == -1){
			this.value = "";
			this.hiddenObj.value = this.value;
			this.hiddenObj.selectedIndex = this.selectedIndex;
			this.text = "";
			this.titleObj.nodeValue = "¡¡";
			this.titleObj.parentNode.title = this.text;
			this.hiddenObj.text = this.text;
			if(this.onChange) this.onChange();
		}
	}

	// ÃÊ±âÈ­ ÀÛ¾÷.
	var nodeList = sObj.childNodes;
	if(nodeList && nodeList.length > 0) {
		for(var i = 0; i < nodeList.length; i++) {
			if(nodeList[i].tagName) {
				if(nodeList[i].tagName.toLowerCase() == "optgroup") {
					var optGroup = new ExtendedOptGroup(this);
					optGroup.init(this, nodeList[i]);
					this.children[this.children.length] = optGroup;
				} else if(nodeList[i].tagName.toLowerCase() == "option") {
					var opt = new ExtendedOption(this);
					opt.init(nodeList[i], "");
					this.children[this.children.length] = opt;
				}
			}
		}
	}
}

/************************* ExtendedOptGroup *************************/
function ExtendedOptGroup(sObj) {
	this.sObj = sObj;	// ºÎ¸ð°¡ µÇ´Â ExtendedSelect °´Ã¼.
	this.label;	// optGroupÀÇ label.
	this.divObj;	// optGroup°ú ±× ÇÏÀ§¿¡ Æ÷ÇÔµÇ´Â optionÀÌ µé¾î°¥ div.
	this.options = new Array();	// option ¸®½ºÆ®.
	/**
	 * ÃÊ±âÈ­ ¸Þ¼Òµå.
	 */
	this.init = function(sObj, optGroup) {
		this.label = optGroup.label;
		var nodeList = optGroup.childNodes;
		if(nodeList && nodeList.length > 0) {
			for(var i = 0; i < nodeList.length; i++) {
				if(nodeList[i].tagName && nodeList[i].tagName.toLowerCase() == "option") {
					var opt = new ExtendedOption(this.sObj);
					opt.init(nodeList[i], "¡¡");	 // optGroup ¹ØÀ¸·Î µé¾î°¡´Â optionÀÌ¹Ç·Î µé¿©¾²±â¸¦ ÇÔ.
					this.options[this.options.length] = opt;
				}
			}
		}
	}
	/**
	 * È­¸é¿¡ »Ñ·ÁÁú °´Ã¼¸¦ ¸¸µå´Â ¸Þ¼Òµå.
	 */
	this.create = function () {
		this.divObj = document.createElement("DIV");
		this.divObj.selObject = this;
		this.divObj.onmouseover = this.onMouseOver;
		this.divObj.onmouseout = this.onMouseOut;
		var div = document.createElement("DIV");
		div.title = this.label;
		div.selObject = this;
		div.onmouseover = this.onMouseOver;
		div.onmouseout = this.onMouseOut;
		div.appendChild(document.createTextNode(this.label));
		SelectEXT.applyOptGroupStyle(div, this.sObj);
		this.divObj.appendChild(div);
		for(var i = 0; i < this.options.length; i++) {
			this.divObj.appendChild(this.options[i].create());
		}
		return this.divObj;
	}
	this.onMouseOver = function (e) {
		var obj = e ? e.target : window.event.srcElement;
		if(obj && obj.selObject) obj.selObject.onMouseOverProc();
	}
	this.onMouseOverProc = function () {
		this.sObj.stopClose();
	}
	this.onMouseOut = function (e) {
		var obj = e ? e.target : window.event.srcElement;
		if(obj && obj.selObject) obj.selObject.onMouseOutProc();
	}
	this.onMouseOutProc = function () {
		this.sObj.startClose();
	}
}

/************************* ExtendedOption *************************/
function ExtendedOption(sObj) {
	this.sObj = sObj;	// ºÎ¸ð°¡ µÇ´Â ExtendedSelect °´Ã¼.
	this.value;	// optionÀÇ °ª.
	this.text;	// optionÀÇ ÅØ½ºÆ®.
	this.selected;	// ÀÌ optionÀÌ ¼±ÅÃµÇ¾ú´Â°¡?
	this.indent;	// È­¸é¿¡ »Ñ·ÁÁú¶§ µé¾î¾²±â °ª.
	this.divObj;	// È­¸é¿¡ »Ñ·ÁÁö´Â div.
	this.index;	// ÀÌ optionÀÇ ¼ø¼­.
	/**
	 * ÃÊ±âÈ­ ¸Þ¼Òµå.
	 */
	this.init = function (opt, indent) {
		this.value = opt.value;
		this.text = opt.text;
		this.selected = opt.selected;
		this.indent = indent;
		this.index = this.sObj.options.length;
		this.sObj.options[this.index] = this;
		if(this.selected) {
			this.sObj.selectedIndex = this.index;
		}
	}
	/**
	 * È­¸é¿¡ »Ñ·ÁÁú °´Ã¼¸¦ ¸¸µå´Â ¸Þ¼Òµå.
	 */
	this.create = function () {
		this.divObj = document.createElement("DIV");
		this.divObj.optObject = this;
		this.divObj.onclick = this.onClick;
		this.divObj.onmouseover = this.onMouseOver;
		this.divObj.onmouseout = this.onMouseOut;
		this.divObj.appendChild(document.createTextNode(this.indent + this.text));
		this.divObj.title = this.text;
		SelectEXT.applyOptionStyle(this.divObj, this.sObj);
		return this.divObj;
	}
	this.onClick = function (e) {
		var obj = e ? e.target : window.event.srcElement;
		if(obj) obj.optObject.onClickProc();
	}
	this.onClickProc = function () {
		if(this.sObj.options[this.sObj.selectedIndex])
			this.sObj.options[this.sObj.selectedIndex].onMouseOutProc();
		this.sObj.selectedIndex = this.index;
		this.sObj.refresh();
		this.sObj.close();
	}
	this.onMouseOver = function (e) {
		var obj = e ? e.target : window.event.srcElement;
		if(obj) obj.optObject.onMouseOverProc();
	}
	this.onMouseOverProc = function () {
		this.divObj.style.background = this.sObj.fontColor;
		this.divObj.style.color = this.sObj.bgColor;
		this.sObj.stopClose();
	}
	this.onMouseOut = function (e) {
		var obj = e ? e.target : window.event.srcElement;
		if(obj) obj.optObject.onMouseOutProc();
	}
	this.onMouseOutProc = function () {
		this.divObj.style.background = this.sObj.bgColor;
		this.divObj.style.color = this.sObj.fontColor;
		this.sObj.startClose();
	}
}


