/**************************************************************/
/*            Select Box                					  */
/**************************************************************/

var SS_ENV = new Object();
SS_ENV.IE_Version = new Number(((window.navigator.appVersion.split('; '))[1].split(' '))[1]);
SS_ENV.CR = new Object();
SS_ENV.CR.ReverseBackground = '#E6E6E6';
SS_ENV.CR.ReverseText = '#333333';
SS_ENV.CR.Border = '#D4D4D4';
SS_ENV.CR.BorderActive = '#D4D4D4';
SS_ENV.ImgPrefix = '../skin/cn/images/';
SS_ENV.DefaultHeight =18;
SS_ENV.ButtonWidth = 16;
SS_ENV.OptionsDivStyle = ''
  + ' display:none;'
  + ' z-index:10;'
  + ' position:absolute;'
  + ' border:1 solid '+ SS_ENV.CR.Border+';'
  + ' background-color:#ffffff;'
  + ' scrollbar-face-color:#FFFFFF;'
  + ' scrollbar-shadow-color:#ffffff;'
  + ' scrollbar-highlight-color:#f3f3f3;'
  + ' scrollbar-3dlight-color:#d9d9d9;'
  + ' scrollbar-darkshadow-color:#d9d9d9;'
  + ' scrollbar-track-color:#ffffff;'
  + ' scrollbar-arrow-color:#ffffff;';
SS_ENV.MouseStyle = 'cursor:hand;'//¹Ú½ºÀ§¿¡¿Ã¶ó°¬À»¶§ÀÇ ¸¶¿ì½º¸ð¾ç
SS_ENV.OptionNobrStyle = ''
  + ' font-size:11px; padding-left:5;'
  + ' font-family:verdana,dotum;';
// SaySelect Variables
var SS_VAR = new Object();
SS_VAR.DivDummy = document.createElement("DIV");
SS_VAR.SelectList = new Array();
SS_VAR.bEventAttached = false;

var SS_CreatedElements = new Object();

function unloadObjects()
{
  try {
    if (SS_VAR && SS_VAR.SelectList)
    {
      for (key in SS_VAR.SelectList)
      {
		if (SS_VAR.SelectList[key])
		{
		  try {
		   SS_VAR.SelectList[key].select.setAttribute('SS', 0);
		  } catch (e) {};
		  delete SS_VAR.SelectList[key];
		}
      }
    }
  } catch (e) {};
}

attachEvent("onunload", unloadObjects);

function SS_create (srcHTML, ListMax, bAutoDetect)
{
  // property
  this.ssID = SS_VAR.SelectList.length;
  this.bOriginalSelect = (bAutoDetect && SS_ENV.IE_Version < 5.5);
  this.select = SS_createElement(srcHTML);
  this.selectedIndex = this.select.selectedIndex;
  this.options = this.select.options;
  this.width = parseInt(this.select.style.width);
  this.height = (this.select.style.height) ? parseInt(this.select.style.height) : SS_ENV.DefaultHeight;
  this.OptionHeight = this.height ;
  this.bListDown = (ListMax && '-'==ListMax.toString().substr(0, 1)) ? false : true;
  this.ListMax = (!isNaN(parseInt(ListMax))) ? Math.abs(ListMax) : 100;

  this.Table;
  this.TitleDiv;
  this.TitleTable;
  this.TitleWrapper;
  this.OptionsDiv;
  this.OptionsWrapper;
  this.OptionsTable;
  this.bFocused = false;
  this.bExpanded = false;
  this.bReverse = false;

  // private method
  this.isThisEventToBeCanceled = SS_isThisEventToBeCanceled;
  this.toggleTitle = SS_toggleTitle;
  this.syncSelectedIndex = SS_syncSelectedIndex;
  this.toggleOptions = SS_toggleOptions;
  this.turnOnOption = SS_turnOnOption;
  this.turnOffOption = SS_turnOffOption;
  this.handleMousewheel = SS_handleMousewheel;
  this.handleOverTitle = SS_handleOverTitle;
  this.handleOutTitle = SS_handleOutTitle;
  this.handleOverOption = SS_handleOverOption;
  this.createTable = SS_createTable;
  this.createTitleDiv = SS_createTitleDiv;
  this.createOptionsDiv = SS_createOptionsDiv;
  this.createOptionTr = SS_createOptionTr;
  this.adjustOptionsDiv = SS_adjustOptionsDiv;
  this.syncOptions = SS_syncOptions;
  this.pressOption = SS_pressOption;
  this.moveOption = SS_moveOption;
  this.releaseOption = SS_releaseOption;
  this.pressTitle = SS_pressTitle;
  this.releaseTitle = SS_releaseTitle;

  // public method
  this.display = SS_display;
  this.insertOption = SS_insertOption;
  this.deleteOption = SS_deleteOption;
  this.changeOption = SS_changeOption;

  // initiate
  this.createTable();
  this.select.setAttribute('SS', this);
  if (!this.bOriginalSelect)
    this.select.onpropertychange = SS_handlePropertychange;
  SS_VAR.SelectList[this.ssID] = this;
}
function SS_display ()
{
  document.write("<div id=SS_TempDiv></div>\n");
  document.all.SS_TempDiv.appendChild(this.Table);
  document.all.SS_TempDiv.removeNode();
}
function SS_write (srcHTML, ListMax, bAutoDetect)
{
  var oSS = new SS_create(srcHTML, ListMax, bAutoDetect);
  oSS.display();
  return oSS;
}
function SS_insertOption (value, innerText, idx)
{
  var NewOption = document.createElement("OPTION");
  SS_CreatedElements[SS_CreatedElements.length] = NewOption;
  this.options.add(NewOption, idx);
  NewOption.innerText = innerText;
  NewOption.value = value;

  if (!this.bOriginalSelect)
    this.createOptionTr(idx);
  this.syncOptions();
  this.adjustOptionsDiv();
  this.syncSelectedIndex();
}
function SS_deleteOption (idx)
{
  this.options.remove(idx);
  if (!this.bOriginalSelect)
    this.OptionsTable.deleteRow(idx);
  this.syncOptions();
  this.adjustOptionsDiv();
  this.syncSelectedIndex();
}
function SS_changeOption (idx, value, innerText)
{
  this.options[idx].value = value;
  this.options[idx].innerText = innerText;
  this.syncOptions();
  this.syncSelectedIndex();
}

function SS_insertOption1 (obj, value, innerText, idx)
{
  var NewOption = document.createElement("OPTION");
  SS_CreatedElements[SS_CreatedElements.length] = NewOption;
  obj.options.add(NewOption, idx);
  NewOption.innerText = innerText;
  NewOption.value = value;

  if (!obj.bOriginalSelect)
    obj.createOptionTr(idx);

  obj.syncOptions();
  obj.adjustOptionsDiv();
  obj.syncSelectedIndex();
}


function SS_changeOption1 (obj, idx, value, innerText)
{
  obj.options[idx].value = value;
  obj.options[idx].innerText = innerText;
  obj.syncOptions();
  obj.syncSelectedIndex();
}

function SS_deleteOption1 (obj, idx)
{
  obj.options.remove(idx);
  if (!obj.bOriginalSelect)
    obj.OptionsTable.deleteRow(idx);
  obj.syncOptions();
  obj.adjustOptionsDiv();
  obj.syncSelectedIndex();
}


function SS_cancelEvent (event)
{
  event.cancelBubble = true;
  event.returnValue = false;
}
function SS_isThisEventToBeCanceled (event)
{
  if ('object' == typeof(event)) {
    switch (event.type) {
      case 'mousedown':
        if (!(event.button & 1)) return true;
        break;
      case 'mouseup':
        if (!(event.button & 1)) return true;
        if (SS_ENV.IE_Version >= 5.5 && event.srcElement != this.srcElementOfLastMousedown && this.srcElementOfLastMousedown != null) {
          this.srcElementOfLastMousedown = null;
          return true;
        }
        break;
      case 'mouseout':
        if (!(SS_ENV.IE_Version < 5.5 && event.srcElement == this.srcElementOfLastMousedown))
          return true;
        break;
      case 'mousemove':
        if (SS_ENV.IE_Version >= 5.5 && event.srcElement != this.srcElementOfLastMousedown && this.srcElementOfLastMousedown != null)
          return true;
        break;
    }
  }
  return false;
}
function SS_createElement (html)
{
  SS_VAR.DivDummy.insertAdjacentHTML('afterBegin', html);
  var oEl = SS_VAR.DivDummy.children(0);
  while (SS_VAR.DivDummy.children.length > 0) {
    SS_VAR.DivDummy.removeChild(SS_VAR.DivDummy.children(0));
  }
  return oEl;
}
function SS_blurExcept (except)
{
  SS_cancelEvent(window.event);

  except = ('number'==typeof(except)) ? except : -1;

  var bHasToDetachEvent = true;
  for (var i=0; i < SS_VAR.SelectList.length; i++) {
    if (-1==except && SS_VAR.SelectList[i].bFocused && SS_VAR.SelectList[i].bExpanded) {
      SS_VAR.SelectList[i].toggleOptions(false, true);
      SS_VAR.SelectList[i].toggleTitle(true);
      bHasToDetachEvent = false;
    }
    else if (i!=except) {
      if (SS_VAR.SelectList[i].bExpanded)
        SS_VAR.SelectList[i].toggleOptions(false, true);
      if (SS_VAR.SelectList[i].bReverse)
        SS_VAR.SelectList[i].toggleTitle(false);
      SS_VAR.SelectList[i].bFocused = false;
    }
  }

  if (SS_VAR.bEventAttached && bHasToDetachEvent) {
    document.detachEvent('onmousedown', SS_blurExcept);
    document.detachEvent('ondblclick', SS_blurExcept);
    SS_VAR.bEventAttached = false;
  }
}
function SS_syncSelectedIndex ()
{
  this.selectedIndex = this.select.selectedIndex;

  if (this.bOriginalSelect) return;

  if (this.TitleTable.cells(0).childNodes(0).innerText != this.options[this.selectedIndex].innerText)
    this.TitleTable.cells(0).childNodes(0).innerText = this.options[this.selectedIndex].innerText;
  if (this.bExpanded)
    this.toggleOptions(false);
}
function SS_syncSelectedIndex1 (obj)
{
  obj.selectedIndex = obj.select.selectedIndex;

  if (obj.bOriginalSelect) return;

  if (obj.TitleTable.cells(0).childNodes(
