﻿
function MenuManager() {
    this.m = new Array;
    this.all = new Object;
    this.setValue = MenuManager_setValue;
    this.addMenu = MenuManager_addMenu;
    this.toString = MenuManager_toString;
}

function LeftMenuManager() {
    this.temp = MenuManager;
    this.temp();
    delete this.temp;
    this.lastOfDepth = MenuManager_lastOfDepth;
    this.hasChild = MenuManager_hasChild;
    this.getSectionAreaHTML = MenuManager_getSectionAreaHTML;
    this.getLogoutButtonHTML = MenuManager_getLogoutButtonHTML;
    this.addHeaderHTML = MenuManager_addHeaderHTML;
    this.addFooterHTML = MenuManager_addFooterHTML;
    this.write = MenuManager_leftMenuWrite;
}

function OptionMenuManager() {
    this.temp = MenuManager;
    this.temp();
    delete this.temp;
    this.write = MenuManager_optionMenuWrite;
}

function LeftFixedBannerManager() {
    this.html = "";
    this.setHTML = MenuManager_setHTML;
    this.write = MenuManager_leftBannerWrite;
}

function LeftFlexibleBannerManager() {
    this.html = "";
    this.setHTML = MenuManager_setHTML;
    this.write = MenuManager_leftBannerWrite;
}



function MenuManager_setValue(aName, aValue) {
    this.all[aName] = aValue;
}

function MenuManager_addMenu(mName,mUrl) {
    var size = this.m.length;
    this.m[size] = new Object;
    this.m[size].name = mName;
    this.m[size].url = mUrl;
}

function MenuManager_hasChild(mIndex) {
    var nowMenu = this.m[mIndex].name;
    var nextMenu = "";
    var result = false;
    if (mIndex+1<this.m.length) nextMenu = this.m[mIndex+1].name;
    if ((nextMenu.indexOf(nowMenu)==0)&&(nextMenu.split("_").length==nowMenu.split("_").length+1)) result = true;
    return result;
}

function MenuManager_lastOfDepth(mIndex,mDepth) {
    var nextMenu = "";
    var result = false;
    for (var i=1; true; i++) {
        if (mIndex+i<this.m.length) {
            nextMenu = this.m[mIndex+i].name;
            if (nextMenu.split("_").length < mDepth) {
                result = true;
            } else if (nextMenu.split("_").length == mDepth) {
                result = false;
                break;
            }
        } else {
            result = true;
        }
        if (result) break;
    }
    return result;
}

function MenuManager_getSectionAreaHTML(headerMode, mainPageURL) {
    var header = this.all.header;
    var imagePath = this.all.imagePath;
    var hasLink = (mainPageURL!=null&&mainPageURL!="") ? true : false;
    var isMain = (headerMode=="main") ? true : false;
    if (headerMode=="sub") headerMode = "";
    else headerMode = "_" + headerMode;
    var mHTML = "";
    mHTML += "<table width='153' border='0' cellpadding='0' cellspacing='0'>\n";
    if (hasLink) {
        mHTML += "<tr><td id='left_mtit'><a href='"+mainPageURL+"' onFocus='this.blur();'><!-- Left Title --><img src='"+imagePath+"gnb_left_tit_"+header+".gif' border='0'></a></td></tr>\n";
    }
    else{
        mHTML += "<tr><td id='left_mtit'><img src='"+imagePath+"gnb_left_tit_"+header+".gif' border='0'></td></tr>\n\n";
    }
    mHTML += "<tr><td height='13'><!-- space before left.menu --></td></tr>\n";
    mHTML += "</table>\n";
    return mHTML;
}


function MenuManager_getLogoutButtonHTML(logoutURL) {
    var header = this.all.header;
    var imagePath = this.all.imagePath;
    var mHTML = "";
    mHTML += "<table cellpadding='0' cellspacing='0' border='0' width='140'>\n";
    mHTML += "<tr><td style='padding-left:2px;'><img onClick='location.href=\""+logoutURL+"\";' src='"+imagePath+"logoutButton.gif' border='0' style='cursor:hand;'></td></tr>\n";
    mHTML += "<tr><td height='6'></td></tr>\n";
    mHTML += "</table>\n";
    return mHTML;
}

function MenuManager_addHeaderHTML(headerHTML) {
    if (this.all.headerHTML) this.all.headerHTML += headerHTML;
    else this.setValue("headerHTML",headerHTML);
}

function MenuManager_addFooterHTML(footerHTML) {
    if (this.all.footerHTML) this.all.footerHTML += footerHTML;
    this.setValue("footerHTML",footerHTML);
}

function MenuManager_toString() {
    document.write("<b>Menu Info.</b>");
    document.write("<br>\n");
    document.write("Menu Header : ");
    document.write(this.all.header);
    document.write("<br>\n");
    document.write("Image Path : ");
    document.write(this.all.imagePath);
    document.write("<br>\n");
    document.write("Menu Size : ");
    document.write(this.m.length);
    document.write("<br>\n");
    for (var i=0; i<this.m.length; i++) {
        document.write(this.m[i].name);
        document.write(" , ");
        document.write(this.m[i].url);
        document.write("<br>\n");
    }
}

function MenuManager_leftMenuWrite(nMenu) {
    var nDepth = nMenu.split("_");
    var header = this.all.header;
    var imagePath = this.all.imagePath;
    var barColor = this.all.barColor;
    var mHTML = "";
    if (this.all.headerHTML) mHTML += this.all.headerHTML;
    mHTML += "<table width='153' border='0' cellpadding='0' cellspacing='0'>\n";
    var flag = true;

    for (var i=0; i<this.m.length; i++) {
        if (this.m[i].name.split("_").length==1) {

            if (nDepth[0]==this.m[i].name.split("_")[0]) {    // 3Depth 현재 Focus될 메뉴일 경우
                mHTML += "    <tr><td class='dep3'><a href=\""+this.m[i].url+"\" onFocus='this.blur();'><img src='"+imagePath+this.m[i].name+"_on.gif' name='"+this.m[i].name+"_menu'></a></td></tr>\n";
                if (this.hasChild(i)) {    // 3Depth 하위가 있을 경우
                    mHTML += "    <tr><td class='dep4_table'>\n";
                    mHTML += "        <table cellspacing='0' cellpadding='0' border='0' width='100%'>\n";
                    i++;

                    for (i=i; true; i++) {
                        if (this.m[i].name.split("_").length==2) {
                            if (nDepth[1]==this.m[i].name.split("_")[1]) {    // 4Depth 현재 Focus될 메뉴일 경우
                                mHTML += "            <tr><td class='dep4'><a href=\""+this.m[i].url+"\" onFocus='this.blur();'><img src='"+imagePath+this.m[i].name+"_on.gif' name='"+this.m[i].name+"'></a></td></tr>\n";
                                if (this.hasChild(i)) {    // 4Depth 하위가 있을 경우
                                    mHTML += "              <tr><td class='dep5_table'>\n";
                                    mHTML += "               <table cellspacing='0' cellpadding='0' border='0' width='100%'>\n";
                                    mHTML += "                  <tr><td class='dep5_tsp'><!-- depth5 top space --></td></tr>\n";
                                    i++;
                                    for (i=i; true; i++) {
                                        if (this.m[i].name==nMenu) {    // 5Depth 메뉴가 현재 메뉴일 경우
                                            mHTML += "                  <tr><td class='dep5'><a href=\""+this.m[i].url+"\" onFocus='this.blur();'><img src='"+imagePath+this.m[i].name+"_on.gif' name='"+this.m[i].name+"'></a></td></tr>\n";
                                        } else {
                                            mHTML += "                  <tr><td class='dep5'><a href=\""+this.m[i].url+"\" onFocus='this.blur();' onmouseover=\""+this.m[i].name+"_menu.src='"+imagePath+this.m[i].name+"_on.gif'\" onmouseout=\""+this.m[i].name+"_menu.src='"+imagePath+this.m[i].name+"_off.gif'\"><img src='"+imagePath+this.m[i].name+"_off.gif' name='"+this.m[i].name+"_menu'></a></td></tr>\n";
                                        }
                                        if (this.lastOfDepth(i,3)) {
                                            break;
                                        }
                                    }
                                    mHTML += "                  <tr><td class='dep5_bsp'><!-- depth5 bottom space --></td></tr>\n";
                                    mHTML += "                </table>\n";
                                    mHTML += "                </td></tr>\n";
                                }
                            } else {    // 4Depth 현재 Focus될 메뉴가 아닐 경우
                                mHTML += "            <tr><td class='dep4'><a href=\""+this.m[i].url+"\" onFocus='this.blur();' onmouseover=\""+this.m[i].name+"_menu.src='"+imagePath+this.m[i].name+"_on.gif'\" onmouseout=\""+this.m[i].name+"_menu.src='"+imagePath+this.m[i].name+"_off.gif'\"><img src='"+imagePath+this.m[i].name+"_off.gif' name='"+this.m[i].name+"_menu'></a></td></tr>\n";
                            }
                            if (!this.lastOfDepth(i,2)) {
                                //mHTML += "            <tr><td height='1' bgcolor='"+barColor+"'></td></tr>\n";
                            } else {
                                break;
                            }
                        }
                    }//End of for
                    mHTML += "        </table>\n";
                    mHTML += "    </td></tr>\n";
                }

            } else {    // 3Depth 현재 Focus될 메뉴가 아닐 경우
                mHTML += "    <tr><td class='dep3'><a href=\""+this.m[i].url+"\" onFocus='this.blur();' onmouseover=\""+this.m[i].name+"_menu.src='"+imagePath+this.m[i].name+"_on.gif'\" onmouseout=\""+this.m[i].name+"_menu.src='"+imagePath+this.m[i].name+"_off.gif'\"><img src='"+imagePath+this.m[i].name+"_off.gif' name='"+this.m[i].name+"_menu'></a></td></tr>\n";

            }
        }
    }
    mHTML += "</table>\n";
	//만약 내부 메뉴가 있다면... 검정바를 보여준다
	if (this.m.length>0)
	{  
		mHTML += "<table width='153' border='0' cellpadding='0' cellspacing='0'>\n";
		mHTML += "<tr><td id='left_mbott'></td></tr>\n";
		mHTML += "</table>\n";
	}  
    if (this.all.footerHTML) mHTML += this.all.footerHTML;
    document.write(mHTML);
}



function MenuManager_optionMenuWrite() {
    var header = this.all.header;
    var imagePath = this.all.imagePath;
    var barColor = this.all.barColor;
    var mHTML = "";
    mHTML += "<table cellpadding='0' cellspacing='0' border='0' width='160' height='100' background='"+imagePath+header+"_optionMenuBackground.gif'>";
    mHTML += "<tr><td valign='top' align='right' style='padding-top:12;'>";
    mHTML += "<table cellpadding='0' cellspacing='0' border='0' width='141'>";
    mHTML += "    <tr>";
    mHTML += "        <td><img src='"+header+"/img/trans.gif' width='7' height='1' border='0'></td>";
    mHTML += "        <td><img src='"+header+"/img/trans.gif' width='134' height='1' border='0'></td>";
    mHTML += "    </tr>";
    for (var i=0; i<this.m.length; i++) {
        if (i>0) mHTML += "    <tr><td colspan='2'><img src='"+header+"/img/trans.gif' width='123' height='1' border='0' style='background-color:"+barColor+";'></td></tr>";
        mHTML += "    <tr>";
        mHTML += "        <td><img src='"+imagePath+header+"_optionMenuBullet.gif' border='0' align='absmiddle'></td>";
        mHTML += "        <td class='optionMenu_"+header+"'><a href=\""+this.m[i].url+"\">"+this.m[i].name+"</a></td>";
        mHTML += "    </tr>";
    }
    mHTML += "</table>";
    mHTML += "</td></tr>";
    mHTML += "</table>";
    document.write(mHTML);
}


function MenuManager_setHTML(sHTML) {
    this.html = sHTML;
}

function MenuManager_leftBannerWrite() {
    document.write(this.html);
}


