//<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();

function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}


function OnloadReplace() {  
    GetReplaceSelects();
    GetReplaceTextarea();
    allBlur();
}

// Æ÷Ä¿½º Á¦°Å
var ForBlurAnchors = document.getElementsByTagName('a');
function allBlur() { 
  for (i=0;i<ForBlurAnchors.length;i++) { 
    ForBlurAnchors[i].onfocus = new Function("ForBlurAnchors["+i+"].blur()"); 
  }
}

//select box ¹è¿­°ú Ä¡È¯ÇÒ Æ¯Á¤ className ¼³Á¤
//sslectBasicÀ» ±âº»À¸·Î, ÁöÁ¤µÈ class°¡ ¿À´Â °æ¿ì¿¡¸¸ select DIV Ä¡È¯À» ½ÇÇà
var REPLACE_SELECTS = new Array();
var REPLACE_SELECTS_CLASSNAME = new Array("SelectBasic","SelectPopup","SelectMoney","SelectType1","SelectType2","SelectType3");

var REPLACE_TEXTAREAS = new Array();
var REPLACE_TEXTAREAS_CLASSNAME = new Array("TextareaBasic");


//Ä¡È¯ÇÒ select¹Ú½º ¼±º°
function GetReplaceSelects() {
if (!$.browser.msie) return;
   
  //ÆäÀÌÁö³» ¸ðµç selectbox, textarea
  var GetAllSelects = document.getElementsByTagName('select');
  
  SelectedNum = 0;
  
  //Á¶°Ç¿¡ ¸Â´Â class¸¦ °¡Áø select¸¸ ¼±º°
  for(i=0; i<GetAllSelects.length; i++) {
    for(j=0; j<REPLACE_SELECTS_CLASSNAME.length; j++) {
      if(GetAllSelects[i].className == REPLACE_SELECTS_CLASSNAME[j]) {
        REPLACE_SELECTS[SelectedNum] = GetAllSelects[i];
        SelectedNum++;
      }
    }
  }
  
  //divÄ¡È¯ ½ÇÇà
  replaceSelects();
}
function GetReplaceTextarea() {
   
  //ÆäÀÌÁö³» ¸ðµç selectbox, textarea
  var GetAllTextareas = document.getElementsByTagName('textarea');
  
  TextareaNum = 0;
  
  //Á¶°Ç¿¡ ¸Â´Â class¸¦ °¡Áø select¸¸ ¼±º°
  for(i=0; i<GetAllTextareas.length; i++) {
    for(j=0; j<REPLACE_TEXTAREAS_CLASSNAME.length; j++) {
      if(GetAllTextareas[i].className == REPLACE_TEXTAREAS_CLASSNAME[j]) {
        REPLACE_TEXTAREAS[TextareaNum] = GetAllTextareas[i];
        TextareaNum++;
      }
    }
  }
  
  //divÄ¡È¯ ½ÇÇà
  replaceTextareas();
}


//textarea DIV Ä¡È¯
function replaceTextareas() {
  
   for(var i=0; i < REPLACE_TEXTAREAS.length; i++) {
      
    //±âÁ¸ textareaÀÇ Á¤º¸ ±¸ÇÔ
    var textareaWidth = findObjWidth(REPLACE_TEXTAREAS[i]);
    var textareaHeight = findObjHeight(REPLACE_TEXTAREAS[i]);
    var textareaClassName = REPLACE_TEXTAREAS[i].className;
    
    //±âÁ¸ textarea¿¡ id°¡ ¾øÀ»°æ¿ì ÀÓ½Ãid ºÎ¿©
    if(REPLACE_TEXTAREAS[i].id == "") {
      REPLACE_TEXTAREAS[i].id = "RootTextareaID" + i;   
    }
    
    //textarea ¸¦ DIV±¸¼ºÀ¸·Î Ä¡È¯
    var textAreaBox1 = document.createElement('div');
    var textAreaBox2 = document.createElement('div');
    var textAreaBox3 = document.createElement('div');
    var textAreaBox4 = document.createElement('div');
    var textAreaCopy = document.createElement('textarea');
    
    //¼Ó¼º¹× idºÎ¿©
    textAreaBox1.className = textareaClassName + "_box1";
    textAreaBox2.className = textareaClassName + "_box2";
    textAreaBox3.className = textareaClassName + "_box3";
    textAreaBox4.className = textareaClassName + "_box4";
    textAreaCopy.className = textareaClassName + "_copy";
      
    textAreaBox1.style.position = 'absolute';
    textAreaBox1.style.top = findPosY(REPLACE_TEXTAREAS[i]);
    textAreaBox1.style.left = findPosX(REPLACE_TEXTAREAS[i]);
    textAreaBox1.style.width = textareaWidth;
    textAreaBox1.style.height = textareaHeight;
    textAreaCopy.id = "CopyTextareaID" + i; 
    textAreaCopy.style.width = textareaWidth-6+'px';
    textAreaCopy.style.height = textareaHeight-8+'px';
    textAreaCopy.innerText = REPLACE_TEXTAREAS[i].innerText;
    
    //div Á¤·Ä, »ðÀÔ
    textAreaBox4.appendChild(textAreaCopy);
    textAreaBox3.appendChild(textAreaBox4);
    textAreaBox2.appendChild(textAreaBox3);
    textAreaBox1.appendChild(textAreaBox2);
    
    //µ¿ÀÛ text¿ë
    //REPLACE_TEXTAREAS[i].style.position = 'relative';
    //REPLACE_TEXTAREAS[i].style.left = '-150px';
    
    //±âÁ¸ textarea
    REPLACE_TEXTAREAS[i].style.visibility = 'hidden';
    
    //textarea Div »ðÀÔ
    document.getElementsByTagName("body")[0].appendChild(textAreaBox1);
    
    //DIVÄ¡È¯µÈ textareaÀÇ ÀÔ·Â³»¿ëÀ» º»·¡ textarea¿¡ Àû¿ë
    textAreaCopy.onkeyup = function() {
      for(var k=0; k < REPLACE_TEXTAREAS.length; k++) {
        document.getElementById(REPLACE_TEXTAREAS[k].id).innerText = document.getElementById("CopyTextareaID"+k).innerText;
      }
    }
		
   }
  
}

//selectbox DIV Ä¡È¯
function replaceSelects() {
  
   for(var i=0; i < REPLACE_SELECTS.length; i++) {
      
    //±âÁ¸ select¹Ú½ºÀÇ Á¤º¸ ±¸ÇÔ
    var selectWidth = findObjWidth(REPLACE_SELECTS[i]);
    var selectHeight = findObjHeight(REPLACE_SELECTS[i]);
    var selectClassName = REPLACE_SELECTS[i].className;
    
    //±âÁ¸ select¹Ú½º¿¡ id°¡ ¾øÀ»°æ¿ì ÀÓ½Ãid ºÎ¿©
    if(REPLACE_SELECTS[i].id == "") {
      REPLACE_SELECTS[i].id = "RootSelectID" + i;
    }
      
    //ÃÖÃÊ ¼±ÅÃµÈ optionÀ» Ç¥½Ã
    var REPLACE_SELECTS_TEXT = REPLACE_SELECTS[i].options[REPLACE_SELECTS[i].selectedIndex].innerHTML;
    
    //select ¸¦ DIV±¸¼ºÀ¸·Î Ä¡È¯
    var selectArea = document.createElement('div');
    var textArea = document.createElement('a');
    var text = document.createTextNode(REPLACE_SELECTS_TEXT);
    
    //¼Ó¼º¹× idºÎ¿©
    selectArea.className = selectClassName + "_selectArea";
    selectArea.style.width = selectWidth;
    selectArea.style.position = 'absolute';
    selectArea.style.top = findPosY(REPLACE_SELECTS[i]);
    selectArea.style.left = findPosX(REPLACE_SELECTS[i]);
    textArea.id = "mySelectText"+i;
    
    //div Á¤·Ä
    textArea.appendChild(text);
    selectArea.appendChild(textArea);
    
    //±âÁ¸ slect¼û±è
    REPLACE_SELECTS[i].style.visibility = 'hidden';
    
    //select div »ðÀÔ
    //REPLACE_SELECTS[i].parentNode.insertBefore(selectArea, REPLACE_SELECTS[i]);
    
    //Å¬¸¯½Ã option div º¸¿©ÁÜ
    textArea.href="javascript:showOptions("+i+")";
    
    //option DIV ±¸¼º,À§Ä¡
    var optionsDiv = document.createElement('div');
    var optionHolder = document.createElement('p');
    optionsDiv.id = "optionsDiv"+i;
    optionsDiv.className = selectClassName + "_optionsDiv";
    optionsDiv.style.display = 'none';
    optionsDiv.style.position = 'absolute';
    optionsDiv.style.width = selectWidth + 'px';
    //optionsDiv.style.height= (REPLACE_SELECTS[i].options.length>=5) ? OptionScroll : 'auto';
    optionsDiv.style.top = findPosY(REPLACE_SELECTS[i])  + 'px';
    optionsDiv.style.left = findPosX(REPLACE_SELECTS[i]) + 'px';
    
    //option ³»¿ë ÀçÇö
    for(var j=0; j < REPLACE_SELECTS[i].options.length; j++) {
      var optionLink = document.createElement('a');
      var optionTxt = document.createTextNode(REPLACE_SELECTS[i].options[j].text);
      optionLink.href = "javascript:showOptions("+i+"); selectMe('"+REPLACE_SELECTS[i].id+"',"+j+","+i+");";
      optionLink.appendChild(optionTxt);
      optionHolder.appendChild(optionLink);
      optionsDiv.appendChild(optionHolder);
    }
    
    //slect Div »ðÀÔ
    document.getElementsByTagName("body")[0].insertBefore(selectArea,document.getElementsByTagName("body")[0].firstChild);
    
    //Option Div »ðÀÔ
    document.getElementsByTagName("body")[0].appendChild(optionsDiv);
		
		//³ôÀÌ(ÀÓ½Ã;)
		var OptionScroll = 88;
		document.getElementById('optionsDiv'+i).style.height = (REPLACE_SELECTS[i].options.length>=5) ? OptionScroll+'px' : 'auto';

		if (REPLACE_SELECTS[i].disabled == true) {
			selectArea.className += " SelectDisable";
			//textArea.disabled = true;
			textArea.href = '#';
		}
  }
}

// ¿É¼Ç DIV¸¦ º¸¿©ÁÜ
function showOptions(g) {
    var Element = document.getElementById("optionsDiv"+g);
    if(Element.style.display == 'none') {Element.style.display = 'block';}
    else if(Element.style.display == 'block') {Element.style.display = 'none';}
}

function selectMe(selectFieldId,OptionNo,selectNo) {  
  //¼¿·ºÆ® ¹Ú½º µ¿ÀÛ ÇÇµå¹é
  selectField = document.getElementById(selectFieldId);
  selectField.selectedIndex = OptionNo;
selectField.fireEvent('onchange');
  //selectField.onchange();
  
  //Ä¡È¯µÈ DIV¼¿·ºÆ®¿¡ ¼±ÅÃÇÑ ¿É¼Ç Àû¿ë
  textVar = document.getElementById("mySelectText"+selectNo);
  var newText = document.createTextNode(selectField.options[OptionNo].innerHTML);
  textVar.replaceChild(newText, textVar.childNodes[0]); 
}

//ÁÂÇ¥±¸ÇÔ
function findPosY(obj) {
  var posTop = 0;
  while (obj.offsetParent) {
    posTop += obj.offsetTop;
    obj = obj.offsetParent;
  }
  return posTop;
}

function findPosX(obj) {
  var posLeft = 0;
  while (obj.offsetParent) {
    posLeft += obj.offsetLeft;
    obj = obj.offsetParent;
  }
  return posLeft;
}


//Å©±â±¸ÇÔ
function findObjWidth(obj) {
  if(obj.style.width) return obj.style.width;
  return obj.offsetWidth;
}

function findObjHeight(obj) {
  if(obj.style.height) return obj.style.height;
  else return obj.offsetHeight;
}


addEvent(window, "load",  OnloadReplace);
