/***********************************************
Á¦ÀÛ : ÃÖ¿µ±Ô (2003. 4. 18)
¹®ÀÇ : http://hooriza.com/
ÆÄÀÏ : HoorizaSelectbox.js
¼³¸í : ¸ð¾çÀ» ¹Ù²Ü¼ö ÀÖ´Â ¼¿·ºÆ® ¹Ú½º
¹«´Ü À̵¿, Àç¹èÆ÷¸¦ ±ÝÇÕ´Ï´Ù
***********************************************/
/*
»ç¿ë¹ý :
1) º» ÀÚ¹Ù½ºÅ©¸³Æ® ÆÄÀÏÀ» ¹®¼¿¡ Æ÷ÇÔ½ÃŲ´Ù
¿¹)
2) body ű×ÀÇ onload, onresize ¼Ó¼º¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀ» ³Ö¾îÁØ´Ù
¿¹)
3) SELECT ű״ ¹Ýµå½Ã FORM ű׷Π°¨½ÎÀÖ¾î¾ß ÇÑ´Ù
¿¹)
4) ¹Ù²ï ¸ð¾çÀÇ »õ·Î¿î ¼¿·ºÆ® ¹Ú½º°¡ »ý±æ°÷¿¡ ½ÄÀ¸·Î DIV ű׸¦ ³Ö¾îÁØ´Ù
¿¹)
5) ¿ø·¡ÀÇ ¼¿·ºÆ® ¹Ú½º¿¡ uselayer="·¹À̾îÀ̸§" ½ÄÀ¸·Î »ç¿ëÇÒ ·¹À̾î À̸§À» ³Ö¾îÁØ´Ù
¿¹)
¼Ó¼º ¼³¸í :
ÀÌ ÀÚ¹Ù½ºÅ©¸³Æ®·Î ¸¸µé¾îÁö´Â ¼¿·ºÆ® ¹Ú½ºÀÇ ¸ð¾çÀº ±âº»ÀûÀ¸·Î XP ½ºÅ¸ÀÏÀÇ ¸ð¾çÀ» °¡Áö¸ç, »õ·Î¿î ÇüÅÂÀÇ
»ç¿ëÀÚ Á¤ÀÇ ½ºÅ¸ÀÏÀ» °¡Áöµµ·Ï Çϴ°ÍÀº SELECT ű׿¡ Ư¼öÇÑ ¼Ó¼ºÀ» ÁÜÀ¸·Î½á °¡´ÉÇÏ´Ù. ¼Ó¼ºÀº ´ë¼Ò¹®ÀÚ
¸¦ ±¸º°ÇÏÁö ¾Ê´Â´Ù.
width : ¼¿·ºÆ® ¹Ú½ºÀÇ °¡·ÎÅ©±â¸¦ ¼³Á¤
height : ¼¿·ºÆ® ¹Ú½º¸¦ Ŭ¸¯ÇßÀ»¶§ µå·Ó´Ù¿îµÇ´Â ¾ÆÀÌÅÛ ¸®½ºÆ® ¹Ú½ºÀÇ ¼¼·ÎÅ©±â¸¦ ¼³Á¤
rollupimage : ¼¿·ºÆ® ¹Ú½º°¡ Roll up µÇ¾úÀ»¶§ÀÇ ÀϹÝÀûÀÎ ¹öư À̹ÌÁö
rollupoverimage : ¼¿·ºÆ® ¹Ú½º°¡ Roll up µÇ¾ú°í ¸¶¿ì½º¸¦ ¿Ã·ÈÀ»¶§ ¹öư À̹ÌÁö
rolluppushimage : ¼¿·ºÆ® ¹Ú½º°¡ Roll up µÇ¾ú°í ¹öưÀ» ´·¶À»¶§ À̹ÌÁö
dropdownimage : ¼¿·ºÆ® ¹Ú½º°¡ Drop down µÇ¾úÀ»¶§ÀÇ ÀϹÝÀûÀÎ ¹öư À̹ÌÁö
dropdownoverimage : ¼¿·ºÆ® ¹Ú½º°¡ Drop down µÇ¾ú°í ¸¶¿ì½º¸¦ ¿Ã·ÈÀ»¶§ ¹öư À̹ÌÁö
dropdownpushimage : ¼¿·ºÆ® ¹Ú½º°¡ Drop down µÇ¾ú°í ¹öưÀ» ´·¶À»¶§ À̹ÌÁö
boxstyle : ¼¿·ºÆ® ¹Ú½ºÀÇ ½ºÅ¸ÀÏ
boxclass : ¼¿·ºÆ® ¹Ú½ºÀÇ ½ºÅ¸ÀÏÀ» ´ã°í ÀÖ´Â CSS Ŭ·¡½º ÁöÁ¤
liststyle : ¾ÆÀÌÅÛ ¸®½ºÆ® ¹Ú½ºÀÇ ½ºÅ¸ÀÏ
listclass : ¾ÆÀÌÅÛ ¸®½ºÆ® ¹Ú½ºÀÇ ½ºÅ¸ÀÏÀ» ´ã°í ÀÖ´Â CSS Ŭ·¡½º ÁöÁ¤
itemstyle : ¾ÆÀÌÅÛÀÇ ½ºÅ¸ÀÏ
itemclass : ¾ÆÀÌÅÛÀÇ ½ºÅ¸ÀÏÀ» ´ã°í ÀÖ´Â CSS Ŭ·¡½º ÁöÁ¤
fontstyle : ÆùÆ®ÀÇ ½ºÅ¸ÀÏ
fontclass : ÆùÆ®ÀÇ ½ºÅ¸ÀÏÀ» ´ã°í ÀÖ´Â CSS Ŭ·¡½º ÁöÁ¤
buttonstyle : ¹öưÀÇ ½ºÅ¸ÀÏ
buttonclass : ¹öưÀÇ ½ºÅ¸ÀÏÀ» ´ã°í ÀÖ´Â CSS Ŭ·¡½º ÁöÁ¤
color : ¾ÆÀÌÅÛÀÇ ±ÛÀÚ»ö
bgcolor : ¾ÆÀÌÅÛÀÇ ¹è°æ»ö
selcolor : ¾ÆÀÌÅÛÀÌ ¼±ÅõǾúÀ»¶§ ±ÛÀÚ»ö
selbgcolor : ¾ÆÀÌÅÛÀÌ ¼±ÅõǾúÀ»¶§ ¹è°æ»ö
ÀÌÀü ¹öÁ¯¿¡ ºñÇØ ¹Ù²ï ³»¿ë :
1) itemstyle °ú itemclass ¼Ó¼ºÀÌ °¢°¢ itemstyle, fontstyle °ú itemclass, fontclass ¼Ó¼ºÀ¸·Î ³ª´µ¾ú½À´Ï´Ù.
»ç¿ë¿¡ ±¸ºÐÀ» ÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù.
2) ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϴµ¥¿¡ ÇÊ¿äÇÑ ±×¸²ÆÄÀÏ spacer.gif °¡ Ãß°¡µÇ¾ú½À´Ï´Ù.
3) ¸®½ºÆ®°¡ ¿·ÁÀÖÀ»¶§ ´Ù¸¥ °÷À» Ŭ¸¯ÇÏ¸é ¸®½ºÆ®°¡ ´ÝÈü´Ï´Ù.
4) ¼¿·ºÆ®¹Ú½º¿¡ Æ÷Ä¿½º¸¦ ÁÙ ¼ö ÀÖ°Ô µÇ¾ú°í Æ÷Ä¿½º°¡ ÁÖ¾îÁø »óÅ¿¡¼ À§, ¾Æ·¡¹æÇâŰ·Î Ç׸ñÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
*/
var sbarray = new Array;
var defaultitemstyle = "padding:3 3 1 3px; cursor:default;";
var defaultfontstyle = "font-family:±¼¸²; font-size:12px;";
var defaultchooseboxstyle = "border:1px solid #7F9DB9; border-width:0 1 1 1;";
var defaultselectedboxstyle = "border:1 solid #7F9DB9; padding:1px;";
function loadSelectBox()
{
for (var i = 0; i < document.forms.length; i++)
{
var theform = document.forms[i];
for (var j = 0; j < document.forms[i].length; j++)
{
var control = document.forms[i][j];
if (control.type == "select-one" && control.getAttribute("USELAYER") && control.getAttribute("NAME"))
{
control.style.visibility = "hidden";
control.style.display = "none";
addSelectBox(control.getAttribute("USELAYER"), "document.forms["+i+"]."+control.getAttribute("NAME"));
}
}
}
for (var i = 0; i < sbarray.length; i++)
loadObject(i);
}
function moveSelectBox()
{
for (var i = 0; i < sbarray.length; i++)
moveObject(i);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function document.onclick()
{
var eventobj = window.event.srcElement;
if (!eventobj.getAttribute("hooriza")) // ´Ù¸¥°÷À» Ŭ¸¯ÇßÀ»¶§
{
closeSelectBoxes();
}
}
function addSelectBox(sboxtext, sseltext)
{
sbarray[sbarray.length] = new Array(sboxtext, sseltext);
}
function initProperties()
{
var properties = new Array;
properties["itemstyle"] = "";
properties["fontstyle"] = "";
properties["boxstyle"] = "";
properties["buttonstyle"] = "";
properties["liststyle"] = "";
properties["itemclass"] = "";
properties["itemfontclass"] = "";
properties["boxclass"] = "";
properties["buttonclass"] = "";
properties["listclass"] = "";
properties["rollimg"] = "/admin/images/xproll.gif";
properties["rolloverimg"] = "/admin/images/xproll_.gif";
properties["rollpushimg"] = "/admin/images/xproll__.gif";
properties["dropimg"] = "/admin/images/xpdrop.gif";
properties["dropoverimg"] = "/admin/images/xpdrop_.gif";
properties["droppushimg"] = "/admin/images/xpdrop__.gif";
properties["fgcolor"] = "windowtext";
properties["bgcolor"] = "window";
properties["fgselcolor"] = "highlighttext";
properties["bgselcolor"] = "highlight";
return properties;
}
function getProperties(objindex)
{
var properties = initProperties();
properties["sboxtext"] = sbarray[objindex][0];
properties["sseltext"] = sbarray[objindex][1];
eval("var ssel = "+properties["sseltext"]+";");
properties["itemstyle"] = (ssel.getAttribute("ITEMSTYLE") ? ssel.getAttribute("ITEMSTYLE") : properties["itemstyle"]);
properties["fontstyle"] = (ssel.getAttribute("FONTSTYLE") ? ssel.getAttribute("FONTSTYLE") : properties["fontstyle"]);
properties["boxstyle"] = (ssel.getAttribute("BOXSTYLE") ? ssel.getAttribute("BOXSTYLE") : properties["boxstyle"]);
properties["buttonstyle"] = (ssel.getAttribute("BUTTONSTYLE") ? ssel.getAttribute("BUTTONSTYLE") : properties["buttonstyle"]);
properties["liststyle"] = (ssel.getAttribute("LISTSTYLE") ? ssel.getAttribute("LISTSTYLE") : properties["liststyle"]);
properties["itemclass"] = (ssel.getAttribute("ITEMCLASS") ? ssel.getAttribute("ITEMCLASS") : properties["itemclass"]);
properties["itemfontclass"] = (ssel.getAttribute("ITEMFONTCLASS") ? ssel.getAttribute("ITEMFONTCLASS") : properties["itemfontclass"]);
properties["boxclass"] = (ssel.getAttribute("BOXCLASS") ? ssel.getAttribute("BOXCLASS") : properties["boxclass"]);
properties["buttonclass"] = (ssel.getAttribute("BUTTONCLASS") ? ssel.getAttribute("BUTTONCLASS") : properties["buttonclass"]);
properties["listclass"] = (ssel.getAttribute("LISTCLASS") ? ssel.getAttribute("LISTCLASS") : properties["listclass"]);
if (ssel.getAttribute("ROLLUPIMAGE"))
{
properties["rollimg"] = ssel.getAttribute("ROLLUPIMAGE");
properties["rolloverimg"] = ssel.getAttribute("ROLLUPIMAGE");
properties["rollpushimg"] = ssel.getAttribute("ROLLUPIMAGE");
}
if (ssel.getAttribute("ROLLUPOVERIMAGE"))
{
properties["rolloverimg"] = ssel.getAttribute("ROLLUPOVERIMAGE");
properties["rollpushimg"] = ssel.getAttribute("ROLLUPOVERIMAGE");
}
properties["rollpushimg"] = (ssel.getAttribute("ROLLUPPUSHIMAGE") ? ssel.getAttribute("ROLLUPPUSHIMAGE") : properties["rollpushimg"]);
if (ssel.getAttribute("DROPDOWNIMAGE"))
{
properties["dropimg"] = ssel.getAttribute("DROPDOWNIMAGE");
properties["dropoverimg"] = ssel.getAttribute("DROPDOWNIMAGE");
properties["droppushimg"] = ssel.getAttribute("DROPDOWNIMAGE");
}
if (ssel.getAttribute("DROPDOWNOVERIMAGE"))
{
properties["dropoverimg"] = ssel.getAttribute("DROPDOWNOVERIMAGE");
properties["droppushimg"] = ssel.getAttribute("DROPDOWNOVERIMAGE");
}
properties["droppushimg"] = (ssel.getAttribute("DROPDOWNPUSHIMAGE") ? ssel.getAttribute("DROPDOWNPUSHIMAGE") : properties["droppushimg"]);
properties["fgcolor"] = (ssel.getAttribute("COLOR") ? ssel.getAttribute("COLOR") : properties["fgcolor"]);
properties["bgcolor"] = (ssel.getAttribute("BGCOLOR") ? ssel.getAttribute("BGCOLOR") : properties["bgcolor"]);
properties["fgselcolor"] = (ssel.getAttribute("SELCOLOR") ? ssel.getAttribute("SELCOLOR") : properties["fgselcolor"]);
properties["bgselcolor"] = (ssel.getAttribute("SELBGCOLOR") ? ssel.getAttribute("SELBGCOLOR") : properties["bgselcolor"]);
return properties;
}
function loadObject(objindex)
{
var sboxdata = "";
var property = getProperties(objindex);
eval("var ssel = "+property["sseltext"]+";");
eval("var sbox = "+property["sboxtext"]+";");
var sbwidth = (ssel.width ? parseInt(ssel.width) : 0);
var selectedindex = (ssel.selectedIndex < 0 ? 0 : ssel.selectedIndex);
var innertext = ssel.options[selectedindex].text;
var sselname = ssel.getAttribute("name");
sboxdata += "";
sboxdata += "| ";
sboxdata += " | ";
sboxdata += " | ";
sboxdata += " | ";
sboxdata += "
| ";
sboxdata += "
";
sboxdata += "| ";
sboxdata += "";
sboxdata += " |
";
sbox.innerHTML = sboxdata;
setCaption(objindex, innertext);
setItems(objindex);
}
function moveObject(objindex)
{
var property = getProperties(objindex);
eval("var sboxlayer = "+property["sboxtext"]+"_layer;");
if (sboxlayer.style.visibility == "visible")
{
sboxlayer.style.display = "none";
sboxlayer.style.display = "block";
}
}
function setSelectBoxColor(objindex, fgcolor, bgcolor)
{
var property = getProperties(objindex);
eval("var sselcaption = "+property["sseltext"]+"_caption;");
eval("var sselcaptionbg = "+property["sboxtext"]+"_captionbg;");
sselcaption.style.backgroundColor = bgcolor;
sselcaption.style.color = fgcolor;
sselcaptionbg.style.backgroundColor = bgcolor;
sselcaptionbg.style.color = fgcolor;
}
function pressKey(objindex)
{
var property = getProperties(objindex);
eval("var ssel = "+property["sseltext"]+";");
eval("var sboxlayer = "+property["sboxtext"]+"_layer;");
if (event.keyCode != 38 && event.keyCode != 40)
return true;
if (event.keyCode == 38) // À ¹æÇâŰ
{
if (ssel.selectedIndex > 0)
ssel.selectedIndex -= 1;
}
else if (event.keyCode = 40) // ¾Æ·¡ ¹æÇâŰ
{
if (ssel.selectedIndex < ssel.length - 1)
ssel.selectedIndex += 1;
}
if (sboxlayer.style.visibility == "visible")
mouseOverItem(objindex, ssel.selectedIndex)
setCaption(objindex, ssel.options[ssel.selectedIndex].text);
return false;
}
function setItems(objindex)
{
var sboxlayerdata = "";
var property = getProperties(objindex);
eval("var ssel = "+property["sseltext"]+";");
eval("var sboxlayer = "+property["sboxtext"]+"_layer;");
var itemlength = ssel.length;
var sbwidth = (ssel.width ? parseInt(ssel.width) : 0);
var sbheight = (ssel.height ? parseInt(ssel.height) : 0);
for (var i = 0; i < itemlength; i++)
{
sboxlayerdata += "";
}
sboxlayer.style.width = sbwidth;
sboxlayer.style.height = sbheight;
sboxlayer.innerHTML = sboxlayerdata;
}
function mouseOverItem(objindex, itemindex)
{
var property = getProperties(objindex);
eval("var howmany = "+property["sseltext"]+".length;");
for (var i = 0; i < howmany; i++)
{
eval("var layeritem = "+property["sboxtext"]+"_layer_item"+i+";");
layeritem.style.backgroundColor = property["bgcolor"];
layeritem.style.color = property["fgcolor"];
}
eval("var layeritem = "+property["sboxtext"]+"_layer_item"+itemindex+";");
layeritem.style.backgroundColor = property["bgselcolor"];
layeritem.style.color = property["fgselcolor"];
layeritem.focus();
}
function buttonOver(objindex, over)
{
var property = getProperties(objindex);
eval("var sboxlayer = "+property["sboxtext"]+"_layer;");
eval("var sselbutton = document."+property["sboxtext"]+"button;");
if (sboxlayer.style.visibility == "visible")
{
if (over == true)
sselbutton.src = property["dropoverimg"];
else
sselbutton.src = property["dropimg"];
}
else
{
if (over == true)
sselbutton.src = property["rolloverimg"];
else
sselbutton.src = property["rollimg"];
}
}
function buttonDown(objindex, down)
{
var property = getProperties(objindex);
eval("var sboxlayer = "+property["sboxtext"]+"_layer;");
eval("var sselbutton = document."+property["sboxtext"]+"button;");
if (sboxlayer.style.visibility == "visible")
{
if (down == true)
sselbutton.src = property["droppushimg"];
else
sselbutton.src = property["dropimg"];
}
else
{
if (down == true)
sselbutton.src = property["rollpushimg"];
else
sselbutton.src = property["rollimg"];
}
}
function giveFocus(objindex)
{
var property = getProperties(objindex);
eval("var sselcaption = "+property["sseltext"]+"_caption;");
sselcaption.focus();
}
function clickButton(objindex)
{
var property = getProperties(objindex);
eval("var ssel = "+property["sseltext"]+";");
eval("var sboxlayer = "+property["sboxtext"]+"_layer;");
eval("var sselcaption = "+property["sseltext"]+"_caption;");
eval("var sselbutton = document."+property["sboxtext"]+"button;");
if (sboxlayer.style.visibility != "visible")
{
closeSelectBoxes();
sboxlayer.style.display = "block";
if (typeof(swipe) == "function")
{
sboxlayer.filters.alpha.opacity = 0
sboxlayer.style.visibility = "visible";
mouseOverItem(objindex, ssel.selectedIndex);
setTimeout("swipe("+property["sboxtext"]+"_layer, 2);",1); // The span must be rendered before
}
else
{
sboxlayer.filters.alpha.opacity = 100;
sboxlayer.style.visibility = "visible";
mouseOverItem(objindex, ssel.selectedIndex);
}
sselbutton.src = property["dropoverimg"];
}
else
{
sboxlayer.style.display = "none";
sboxlayer.style.visibility = "hidden";
sselbutton.src = property["rolloverimg"];
giveFocus(objindex);
}
}
function closeSelectBoxes()
{
for (var i = 0; i < sbarray.length; i++)
{
var property = getProperties(i);
eval("var sboxlayer = "+property["sboxtext"]+"_layer;");
eval("var sselbutton = document."+property["sboxtext"]+"button;");
if (sboxlayer.style.visibility == "visible")
{
sboxlayer.style.display = "none";
sboxlayer.style.visibility = "hidden";
sselbutton.src = property["rolloverimg"];
}
}
}
function selectItem(objindex, index)
{
var property = getProperties(objindex);
eval("var ssel = "+property["sseltext"]+";");
eval("var sbox = "+property["sboxtext"]+";");
ssel.selectedIndex = index;
clickButton(objindex);
setCaption(objindex, ssel.options[ssel.selectedIndex].text);
}
function setCaption(objindex, text)
{
var property = getProperties(objindex);
eval("var sselcaption = "+property["sseltext"]+"_caption;");
eval("var sselrealcaption = "+property["sboxtext"]+"_realcaption;");
sselrealcaption.innerHTML = text+"
";
sselcaption.style.height = sselrealcaption.offsetHeight;
}