﻿//CMenu类
function CMenu() {
	this.addMenu = CMenu_addMenu;
    this.getMenu = CMenu_getMenu;
    this.Show = CMenu_showMenu;
    //存储菜单
    this.Menus = [];
}

//a_sID,Menu ID
function CMenu_addMenu(a_sID) {
    var oMenus = this.Menus;
    var sID = a_sID.toUpperCase(), sTemp="";
    var oMenu = this.getMenu(a_sID);

    if (oMenu) {
        alert("对不起,菜单 " & a_sID & " 已经存在,无法添加!");
        return null
    }

    //创建Menu对象
    oMenu = new TMenu(a_sID);
    oMenus.push(oMenu);
    //更新TMenu集合
    this.Menus=oMenus;
    //返回TMenu对象
    return oMenu;
}

//获取菜单
function CMenu_getMenu(a_sID) {
    var oMenus = this.Menus, oMenu=null;
    var iLen = oMenus.length, i=0;
    var sID = a_sID.toUpperCase(), sTemp="";

    for (i=0;i<iLen;i++) {
        oMenu = oMenus[i];
        sTemp = oMenu.ID.toUpperCase();

        if (sTemp==sID) {
            break;
        }

        oMenu=null;
    }

    return oMenu;
}

//显示菜单
function CMenu_showMenu(a_sID) {
    //获取菜单
    var oMenu = this.getMenu(a_sID);
    if (oMenu==null) {return;}
    var sHtml = '<div id="'+oMenu.ID+'">\n';
    var oItems=oMenu.Items, oItem=null, theMenu=null;
    var i=0, j=0;

    sHtml += '  <ul>\n';

    for (i=0;i<oItems.length;i++) {
        oItem = oItems[i];
        if (typeof(oItem)=="object") {
             sHtml += '     <li id="'+ oItem.ID+'"><a href="'+oItem.URL+'" title="'+oItem.Alt+'"><span>'+oItem.Text+'</span></a></li>\n';
        }
    }

    sHtml += '  </ul>\n';
    sHtml += '<div id="'+a_sID+'_Level" style="display:none;"></div>\n</div>\n';
    document.write(sHtml);
    theMenu = document.getElementById(a_sID);

    theMenu.onmouseover=function(event) {
        var e=event||window.event;
        var obj=e.target || e.srcElement;
        var theSub=document.getElementById(theMenu.id+'_Level'), oPItem=null, oNode=obj;
        var sID=obj.id, bHasFound=false, m=0, n=0;

        while (oNode.tagName!="LI") {
            if (oNode.tagName=="UL" || oNode.tagName=="DIV") {
                //十秒后，自动隐藏子菜单
	            oMenu.Timer=setTimeout("_HideSubMenu('"+theMenu.id+"_Level')",oMenu.TimeOut*1000);
                return;
            }
            oNode=oNode.parentNode;
        }

        sID=oNode.id;

        //取消隐藏Timer
        clearTimeout(oMenu.Timer);
        oMenu.Timer=null;

        for (m=0;m<oItems.length;m++) {
            if (!bHasFound) {oPItem=oItems[m];}
            if (oPItem) {
                if ((oPItem.ID==sID) || (bHasFound)) {
                    break;
                } else {
                    for (n=0;n<oPItem.Items.length;n++) {
                        oNode=oPItem.Items[n];
                        if (oNode.ID==sID) {
                            bHasFind=true;
                            break;
                        }
                    }
                }
            }
            oPItem=null;
        }
        if (oPItem) {
            if ( oPItem.PID==-1) {
                if(oPItem.Items.length>0) {
                    theSub.style.display="";
                    theSub.innerHTML=oPItem.getSub();
                } else {
                    theSub.innerHTML="";
                }
            }
        }
    };
}

//隐藏子菜单
function _HideSubMenu(a_sID) {
    var oObj = document.getElementById(a_sID);
    if (oObj) {
        oObj.style.display='none';
    }
}


//Menu对象
function TMenu(a_sID) {
    this.ID=a_sID;
    this.Items=[];
    this.Timer=null;
    this.TimeOut=10;//默认为十秒
    this.addItem = TMenu_addItem;
}

//addItem方法
function TMenu_addItem(a_sItemID, a_sItemText, a_sItemAlt, a_sItemURL) {
    var oItems=this.Items, oItem=null;
    var iTemp = oItems.length, iTemp=0, i=0;
    var sItemID = a_sItemID.toUpperCase();

    for (i=0;i<iTemp;i++) {
        oItem = oItems[i];
        if (oItem.ID.toUpperCase()==sItemID) {
            alert("菜单项 "+ a_sItemID + " 已经存在,无法添加!");
            return null;
        }
    }
    //创建Menu对象
    oItem = new TItem(this.ID,-1,a_sItemID, a_sItemText, a_sItemAlt, a_sItemURL);
    oItems.push(oItem);
    //更新Items集合
    this.Items=oItems;
    //返回TItem对象
    return oItem;
}

//Item对象
function TItem(a_sMenuID,a_sPID,a_sItemID, a_sItemText, a_sItemAlt, a_sItemURL) {
    //菜单ID
    this.Menu=a_sMenuID;
    //菜单项ID
    this.ID=a_sItemID;
    //菜单项父ID
    this.PID=a_sPID;
    //菜单项文字说明
    this.Text=a_sItemText;
    //菜单项链接提示信息
    this.Alt=a_sItemAlt;
    //菜单链接地址
    this.URL=a_sItemURL;
    //子菜单项集合
    this.Items=[];
    this.addItem=TItem_addItem;
    //获取子菜单
    this.getSub=TItem_getSubMenu;
//    this.onmouseOver=TItem_showSub;
}

//增加子菜单
function TItem_addItem(a_sItemID,a_sItemText, a_sItemAlt, a_sItemURL) {
    var oItems = this.Items, oItem=null;
    var iLen = oItems.length, i=0;
    var sItemID = a_sItemID.toUpperCase(), sTemp="";
    var sPID = this.ID;

    for (i=0;i<iLen;i++) {
        oItem = oItems[i];
        if (oItem.ID.toUpperCase()==sItemID) {
            alert("菜单项 "+ a_sItemID + " 已经存在,无法添加!");
            return null;
        }
    }

    oItem=new TItem(this.Menu,sPID,a_sItemID,a_sItemText,a_sItemAlt,a_sItemURL);
    oItems.push(oItem);
    this.subItems=oItems;

    return oItem;
}

//Item对象 -> getSub方法
function TItem_getSubMenu() {
    var sPID=this.ID, sHtml="";
    var oItems = this.Items, oItem=null;
    var iLen = oItems.length, i=0;

    sHtml = '<ul>\n';

    for (i=0;i<iLen;i++) {
        oItem=oItems[i];
        if (oItem.PID==sPID) {
            sHtml = sHtml+'<li id="'+oItem.ID+'"><a href="'+oItem.URL+'" title="'+oItem.Alt+'"><span>'+oItem.Text+'</span></a></li>\n';
        }
    }

    sHtml += '</ul>\n';

    return sHtml;
}
	
//创建菜单集合
var oMenus = new CMenu();
//创建菜单一
var oMenu=oMenus.addMenu("tabs"),oItem=null, oSubItem=null;
if (oMenu) {
    //设置子菜单自动隐藏时间为15秒，TMenu钟默认为10秒
    oMenu.TimeOut=15;
    //创建一级菜单项，用TMenu对象的addItem方法
    oItem=oMenu.addItem("mnuTest1","首页","首页","/");
    //创建二级子菜单项，用TItem对象的addItem方法创建
    oItem=oMenu.addItem("mnuTest2","动态","动态","/Web/News/");
    oSubItem=oItem.addItem("mnuTest2_t1","本站动态","本站动态","/Web/News/Site/");
    oSubItem=oItem.addItem("mnuTest2_t2","业内信息","业内信息","/Web/News/Info/");
    oSubItem=oItem.addItem("mnuTest2_t3","设计比赛","设计比赛","/Web/News/Compete/");
	oSubItem=oItem.addItem("mnuTest2_t4","其它信息","其它信息","/Web/News/Other/");

    //创建一级菜单
    oItem=oMenu.addItem("mnuTest3","教程","教程","/Web/Article/");
	//创建二级子菜单项，用TItem对象的addItem方法创建
    oSubItem=oItem.addItem("mnuTest3_t1","基础教程","基础教程","/Web/Article/Base/");
    oSubItem=oItem.addItem("mnuTest3_t2","图形实例","图形实例","/Web/Article/Photo/");
    oSubItem=oItem.addItem("mnuTest3_t3","网页制作","网页制作","/Web/Article/Web/");
	oSubItem=oItem.addItem("mnuTest3_t4","论坛精华","论坛精华","/Web/Article/Digest/");
	oSubItem=oItem.addItem("mnuTest3_t5","图形图像","图形图像","/Web/Article/Photos/");

    oItem=oMenu.addItem("mnuTest4","艺术","艺术","/Web/Art/");
	//创建二级子菜单项，用TItem对象的addItem方法创建
    oSubItem=oItem.addItem("mnuTest4_t1","平面设计","平面设计","/Web/Art/Gallery/");
    oSubItem=oItem.addItem("mnuTest4_t2","手绘插画","手绘插画","/Web/Art/Hand/");
    oSubItem=oItem.addItem("mnuTest4_t3","3D视觉","3D视觉","/Web/Art/3D/");
	oSubItem=oItem.addItem("mnuTest4_t4","视觉欣赏","视觉欣赏","/Web/Art/Vision/");

    oItem=oMenu.addItem("mnuTest5","资源","资源","/Web/Resource/");
	//创建二级子菜单项，用TItem对象的addItem方法创建
    oSubItem=oItem.addItem("mnuTest5_t1","电子杂志","电子杂志","/Web/Resource/Ebook/");
    oSubItem=oItem.addItem("mnuTest5_t2","插件下载","插件下载","/Web/Resource/Plugins/");
    oSubItem=oItem.addItem("mnuTest5_t3","源图共享","源图共享","/Web/Resource/Share/");

    oItem=oMenu.addItem("mnuTest6","品网","品网","/Web/Savour/");
    //oItem=oMenu.addItem("mnuTest7","专题","专题","/Web/Special/");

	oItem=oMenu.addItem("mnuTest10","博客","博客","http://blog.spvrk.com");
    oItem=oMenu.addItem("mnuTest11","聚合","聚合","http://www.ixna.net");;
    oItem=oMenu.addItem("mnuTest12","论坛","论坛","http://bbs.spvrk.com");
	//oItem=oMenu.addItem("mnuTest2","子站","子站","");
	//创建二级子菜单项，用TItem对象的addItem方法创建
	//oSubItem=oItem.addItem("mnuTest12_t1","IT世界","IT世界","http://it.spvrk.com");
	//oSubItem=oItem.addItem("mnuTest12_t2","IT世界","IT世界","http://blog.spvrk.com");
}