function ezSelect(containerName) {
	if(containerName){
		this.indexLastOpened = 0;
		this.ContainerElement = document.getElementById(containerName);
		this.ItemElements = new Array();
		this.HandlerElements = new Array(); //셀렉트 옵션 이벤트 헨들링을 위한 엘리먼트 객체 변수
		this.selectLyrElement = this.ContainerElement.getElementsByTagName('ul');
		this.val = this.ContainerElement.getElementsByTagName('p'); //선택된 옵션 값 노출 영역
		this.toggleSwitchElement = this.ContainerElement.getElementsByTagName('button'); //셀렉트 옵션창 토글 버튼
		var elementsInContainers = this.ContainerElement.getElementsByTagName('*');
		var elementsInObj = this.ContainerElement.getElementsByTagName('li');
		this.handlerClass = 'handler'; // 이벤트 헨들링을 위한 구분자
		var classNameAtToggle = 'toggled';
		this.clearIdx = elementsInObj.length;
		this.elementsLength = elementsInContainers.length;
		this.selectLyrElement[0].style.width = parseInt(this.ContainerElement.style.width) - 2 + 'px';
		this.val[0].onclick = this.toggle(this, classNameAtToggle);
		this.toggleSwitchElement[0].onclick = this.toggle(this, classNameAtToggle);
		this.ContainerElement.onmouseover = this.OnMouseOver(this, classNameAtToggle);
		this.timer = setInterval(this.Delay(this, classNameAtToggle),50);

		for (var i=0; i < this.elementsLength; i++){
			if (this.IsClassNameIncluded(elementsInContainers[i], this.handlerClass )){
				this.HandlerElements.push(elementsInContainers[i]);
				var tempIndex = this.HandlerElements.length - 1;
				this.HandlerElements[tempIndex].onclick = this.Focus(tempIndex, this, classNameAtToggle);
			}
		}
	}
}
ezSelect.prototype.Delay = function(caller, classNameAtToggle) {
	return function() {
		//console.log(caller.ContainerElement.id);
		caller.ContainerElement.onmouseout = caller.OnMouseOut(caller, classNameAtToggle);
	};
};

ezSelect.prototype.Focus = function(idx, caller, className) {
	return function() {
		caller.val[0].innerHTML = caller.HandlerElements[idx].getElementsByTagName('span')[0].innerHTML;
		caller.RemoveClassFromElement(caller.ContainerElement, className);
		caller.RemoveClassFromElement(caller.ContainerElement, 'click');
	};
};
ezSelect.prototype.toggle = function(caller, className) {
	return function() {
		if (caller.ContainerElement.className.indexOf(className)>-1){
			caller.RemoveClassFromElement(caller.ContainerElement, className);
			caller.RemoveClassFromElement(caller.ContainerElement, 'click');
		} else {
			caller.AddClassToElement(caller.ContainerElement, className);
			caller.AddClassToElement(caller.ContainerElement, 'click');
		}
	};
};

ezSelect.prototype.OnMouseOver = function(caller, className){
	return function(){
		if (caller.ContainerElement.className.indexOf('click')>-1){
			caller.AddClassToElement(caller.ContainerElement, className);
			caller.timer1 = setTimeout("selectbox1.AddClassToElement(selectbox1.ContainerElement,'click');",10);
			caller.timer2 = setTimeout("selectbox2.AddClassToElement(selectbox2.ContainerElement,'click');",10);
		}
	};
};


ezSelect.prototype.OnMouseOut = function(caller, className){
	return function(){
		caller.RemoveClassFromElement(caller.ContainerElement, className);
		caller.timer1 = setTimeout("selectbox1.RemoveClassFromElement(selectbox1.ContainerElement,'click');",10);
		caller.timer2 = setTimeout("selectbox2.RemoveClassFromElement(selectbox2.ContainerElement,'click');",10);
	};
};

ezSelect.prototype.IsClassNameIncluded = function(element, className){
	var returnValue = false;
	var classNameStr = element.className;
	var tempArr = classNameStr.split(' ');
	var tempArrLength = tempArr.length;
	for (var i=0; i < tempArrLength; i++){
		if (tempArr[i] == className){
			returnValue = true;
		}
	}
	return returnValue;
};


ezSelect.prototype.AddClassToElement = function(element, className) {
	if (!this.IsClassNameIncluded(element, className))	{
		var oldClassName = element.className;
		if (oldClassName.length > 0) {
			element.className = oldClassName + ' ' + className;
		} else {
			element.className = className;
		}
	}
};

ezSelect.prototype.RemoveClassFromElement = function(element, className){
	if (this.IsClassNameIncluded(element, className)) {
		var classNameStr = element.className;
		var tempArr = classNameStr.split(' ');
		var newClassNameStr = '';
		var tempArrLength = tempArr.length;
		for (var i=0; i < tempArrLength; i++){
			if (tempArr[i] != className){
				if(newClassNameStr.length > 0) {
					newClassNameStr += ' ';
				}
				newClassNameStr += tempArr[i];
			}
		}
		element.className = newClassNameStr;
	}
};
AddLoadEvent = function(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
		} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		};
	}
};

// Start Up Code
var selectbox1 = null;
var selectbox2 = null;

function startup(){

 };

AddLoadEvent(startup);

function leftMenuOnClick(pmenuIdx, cmenuIdx){

  var pmenu = document.getElementsByName("pmenu");

  for(var i = 0 ; i < pmenu.length ; i++){
    if(i == pmenuIdx){
      if(pmenu[i].className.indexOf("mn_on") < 0){
        pmenu[i].className = pmenu[i].className + " mn_on";
      }
    } else {
      pmenu[i].className = pmenu[i].className.replace(" mn_on","");
    }

    var cmenu = document.getElementsByName("cmenu" + i);
    for(var j = 0 ; j < cmenu.length ; j++) {
      if(i== pmenuIdx && j == cmenuIdx){
        if(cmenu[j].className.indexOf("current") < 0){
          cmenu[j].className = cmenu[j].className + " current";
        }
      } else {
        cmenu[j].className = cmenu[j].className.replace(" current","");
      }
    }
  }

}

function programButtonOnClick(idx){

  var programButton = document.getElementsByName("programButton");

  for(var i = 0 ; i < programButton.length ; i++){
    if(i == idx){
      if(programButton[i].className.indexOf("on") < 0){
        programButton[i].className = programButton[i].className + "on";
      }
    } else {
      programButton[i].className = programButton[i].className.replace("on","");
    }
  }

}
