function MultiSelectImageMenu(outer, mnuImgcssName, contentDivcssName, imgBasePath, onFiles, offFiles)
{
    if(outer == null) alert('out Elem is null: ' + contentDivcssName);
    this.OuterElem = outer;
    this.onImage = onFiles;
    this.offImage = offFiles;
    this.ImageBase = imgBasePath;
    
    this.menus = GUtil.ElemSByClass(mnuImgcssName, outer, 'img' ); //¸Þ´ºµé..
    
    if(contentDivcssName == null)
        this.contents = null;
    else
        this.contents = GUtil.ElemSByClass(contentDivcssName, outer, 'div' ); //¸Þ´º¼±ÅÃ½Ã º¸¿©Áö´Â ÄÁÅÙÃ÷°¡ µé¾îÀÖ´Â divµé...    
}

MultiSelectImageMenu.prototype.Init = function(holdLastOver, initialSelectBy, evtName)
{
    if(this.menus.length==0) return;
    
    for(k=0 ; k<this.menus.length; k++) //¸Þ´º¿¡ mouseover ÀÌº¥Æ® Ãß°¡..
    {
        if(evtName=='click' || evtName == 'onclick') 
            this.menus[k].onclick = this.SelectMenu; //Å¬¸¯½Ã ¹ÝÀÀÇÑ´Ù.
        else 
        {
            this.menus[k].onmouseover = this.SelectMenu; //¸¶¿ì½º ¿À¹ö¿¡ ¹ÝÀÀÇÑ´Ù.            
            if(holdLastOver == false)
            {//¸¶Áö¸· OnµÈ ¸Þ´º¸¦ À¯Áö½ÃÅ³ÇÊ¿ä°¡ ¾ø´Ù: ¸ÞÀÎ¸Þ´ºµî...
                this.menus[k].onmouseout = this.DeSelectMenu;
            }
            else
            {//¸¶¿ì½º°¡ ºüÁ®³ª°¡´õ¶óµµ ¸¶Áö¸· ¼±ÅÃµÈ°ÍÀÌ ¼±ÅÃµÈ »óÅÂ·Î ÀÖ°Ô ÇÑ´Ù.:(»óÇ°Áø¿­ ÅÇ µî¿¡ »ç¿ëµÈ´Ù.)
            }
        }
        
        this.menus[k].mnObj = this;
    }
    
    //¸ðµç ¸Þ´º¸¦ off·Î ÃÊ±âÈ­ ½ÃÅ²´Ù.
    for(k=0 ; k<this.menus.length; k++)
    {
        //menu OFF
        this.menus[k].setAttribute('src', this.ImageBase + this.offImage[k]);
        if(this.contents!=null && this.contents != 'undefined') this.contents[k].style.display = 'none';
    }
    
    if(typeof initialSelectBy == 'undefined' || initialSelectBy == null || initialSelectBy == 'first') //ÃÖÃÊ¿¡´Â 1¹ø ¸Þ´º°¡ ¼±ÅÃµÇµµ·Ï ÇÑ´Ù.
        this.SelectMenu(null, this.menus[0]); 
    else if (typeof initialSelectBy == 'number')
        this.SelectMenu(null, this.menus[initialSelectBy]);
    else if(initialSelectBy == 'url') //ÃÖÃÊ¿¡¿¡ url¿¡ ¸Â´Â ¸Þ´º¸¦ ¼±ÅÃÇÑ´Ù.
    {
        var curl = window.location.href.toLowerCase();        
        for(k=0 ; k<this.menus.length; k++)
        {
            var atagurl = GUtil.FindOuterElementByTagName(this.menus[k], 'a');
            atagurl = atagurl.getAttribute('href');
            if(atagurl!= null) atagurl = atagurl.toLowerCase();
            atagurl = atagurl.substring(0, atagurl.lastIndexOf('/'));
            if(curl.indexOf(atagurl)>=0)
            {
                this.offImage[k] = this.onImage[k];
                this.SelectMenu(null, this.menus[k]);
                break;
            }
        }
    }
}

MultiSelectImageMenu.prototype.DeSelectMenu = function DeSelectMenu(evt, src)
{
    if(src == null) //Ã³À½¿¡ ÇÑ¹ø¸¸ src°¡ ÀÖ°í mouser over ÀÏ¶§´Â src´Â Ç×»ó nullÀÌ´Ù.
    {
        evt = (evt) ? evt : ((window.event) ? window.event : "");
        if (evt)
            src = (evt.target) ? evt.target : evt.srcElement;// mouseoverÀÏ¶§ evt ¼Ò½º¸¦ Ã£´Â´Ù.
    }
    
    if(src.mnObj==null) return;    
    mn = src.mnObj;    
    if(src==null || typeof mn.menus == 'undefined' || mn.menus == null) return;
    for(k=0 ; k<mn.menus.length; k++)
    {
        if(src == mn.menus[k]) //menu On
        {
            mn.menus[k].setAttribute('src', mn.ImageBase + mn.offImage[k]);
            if(mn.contents!=null && mn.contents != 'undefined') mn.contents[k].style.display = 'none';
        }
    }
}

MultiSelectImageMenu.prototype.SelectMenu = function SelectMenu(evt, src)
{
    if(src == null) //Ã³À½¿¡ ÇÑ¹ø¸¸ src°¡ ÀÖ°í mouser over ÀÏ¶§´Â src´Â Ç×»ó nullÀÌ´Ù.
    {
        evt = (evt) ? evt : ((window.event) ? window.event : "")
        if (evt)
            src = (evt.target) ? evt.target : evt.srcElement;// mouseoverÀÏ¶§ evt ¼Ò½º¸¦ Ã£´Â´Ù.
    }
    
    if(src.mnObj==null) return;    
    mn = src.mnObj;    
    if(src==null || typeof mn.menus == 'undefined' || mn.menus == null) return;
    for(k=0 ; k<mn.menus.length; k++)
    {
        if(src == mn.menus[k]) //menu On
        {
            mn.menus[k].setAttribute('src',mn.ImageBase + mn.onImage[k]);
            if(mn.contents != null && mn.contents != 'undefined') mn.contents[k].style.display = 'inline';
        }
        else  //menu OFF
        {
            mn.menus[k].setAttribute('src', mn.ImageBase + mn.offImage[k]);
            if(mn.contents!=null && mn.contents != 'undefined') mn.contents[k].style.display = 'none';
        }
    }
}

////////////////////////////////////////// Text ¸Þ´º Å¬·¡½º /////////////////////////////////////////////////////////////////////////
function MultiSelectTextMenu(mnus, divs, cOn, cOff, initialSelect)
{
    this.TextMenus = mnus;
    this.Divs = divs;
    this.ColorOn = cOn;
    this.ColorOff = cOff;
    
    for(mk = 0; mk < mnus.length; mk++)
    {
        this.TextMenus[mk].onmouseover = this.OnMouseOver;
        this.TextMenus[mk].mnobj = this;
        this.TextMenus[mk].mnidx = mk;        
        
        this.TextMenus[mk].style.color = cOff;
        this.Divs[mk].style.display = 'none';
    }
    
    if(initialSelect == null || initialSelect == 'undefined')   initialSelect = 0;
    
    this.TextMenus[initialSelect].style.color = cOn;
    this.Divs[initialSelect].style.display = 'block';
}

MultiSelectTextMenu.prototype.OnMouseOver = function(evt)
{  
    var src = null;
    evt = (evt) ? evt : ((window.event) ? window.event : "")
    if (evt) src = (evt.target) ? evt.target : evt.srcElement;// mouseoverÀÏ¶§ evt ¼Ò½º¸¦ Ã£´Â´Ù.
    
    var mnobj = src.mnobj;
    for(ik = 0 ; ik < mnobj.Divs.length; ik++)
    {
        mnobj.Divs[ik].style.display = 'none';
        mnobj.TextMenus[ik].style.color = mnobj.ColorOff;
    }
    
    mnobj.Divs[src.mnidx].style.display = 'block';
    mnobj.TextMenus[src.mnidx].style.color = mnobj.ColorOn;
}