//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");
var REPLACE_LOADED = false;

function OnloadReplace() {  
	try {
		if ((!$.browser.msie) || ($.browser.version > 8)) {
			return;
		}
	} catch(e) {
	}

	if (!REPLACE_LOADED) {
		GetReplaceSelects();
		REPLACE_LOADED = true;
	}
    GetReplaceTextarea();
}


//Ä¡È¯ÇÒ select¹Ú½º ¼±º°
function GetReplaceSelects() {
   
  //ÆäÀÌÁö³» ¸ðµç 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 = 83;
		document.getElementById('optionsDiv'+i).style.height= (REPLACE_SELECTS[i].options.length>=5) ? OptionScroll : '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;
}



function RelocateSelects() {
  for(var j=0; j<REPLACE_SELECTS_CLASSNAME.length; j++) {
    var t = REPLACE_SELECTS_CLASSNAME[j];
    var sel = getElementsByClass(t + '_selectArea');
    var opt = getElementsByClass(t + '_optionsDiv');
    for (var k = 0; k<sel.length; k++) {
      document.body.removeChild(sel[k]);
      document.body.removeChild(opt[k]);
    }
  }
  REPLACE_LOADED = false;
  OnloadReplace();
  return false;
}


function RemoveSelects(t, n) {
  if (n == null) n=0;
  var sel = getElementsByClass(t + '_selectArea');
  var opt = getElementsByClass(t + '_optionsDiv');
  if (!sel[n]) return;
  document.body.removeChild(sel[n]);
  document.body.removeChild(opt[n]);
}


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;
}


if (typeof(addOnloadHandle)!="undefined") {
	addOnloadHandle("OnloadReplace()");
}
else {
	window.onload = OnloadReplace;
}

window.onresize = RelocateSelects;

