亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? menu.lib.js

?? asp的bbs程序
?? JS
字號:
?/*
  By Hangring
  #2008.02.19#
  ---
  use list:
  > global.lib.js
  > node.lib.js
  > events.lib.js
  > node.lib.js
  > css.lib.js
  > function.lib.js
  > popup.lib.js
  ---
  菜單
  ---
  包含樣式:
  <link rel="stylesheet" href="css/menu.lib.css" type="text/css" />
*/
function Menu () {
    this.id = 'menu_' + Global.Random();
    //Menu[this.id] = this;
    // container
    this.container = null;
    // same menu sign
    this.sign = '';

    // the button open this menu
    this.button = null;

    // parent menu item `div`
    this.menuItem = null;
    // current selected item
    this.current = null;
    // parent menu
    this.parent = null;
    // child menu
    this.child = null;

    // mouse down function
    this.mouseDown = null;
    // window resize function
    this.resize = null;

    this.dataProvider = [
        {text:'菜單級別一',css:'',link:function () {alert('執行命令');}},
        {text:'bbb',css:'',child:[
            {text:'菜單級別二',css:'',link:'#'},
            {text:'ddd',css:'',child:[
                {text:'eee',css:'',link:'#'},
                {text:'ee',css:'',link:'#'},
                {text:'fdsf',css:'',link:'#'},
                {text:'dfag',css:'',link:'#'},
                {text:'dffdsas',css:'',link:'#'},
                {text:'dsaf',css:'',link:'#'},
                {text:'fdsg',css:'',link:'#'},
                {text:'rewq',css:'',link:'#'}
            ]},
            {text:'ddd',css:'',child:[
                {text:'菜單級別三',css:'',link:'#'},
                {text:'dfs',css:'',link:'#'},
                {text:'dfs',css:'',link:'#'},
                {text:'dfs',css:'',link:'#'},
                {text:'dfs',css:'',child:[
                    {text:'111',css:'',link:'#'},
                    {text:'222',css:'',link:'#'},
                    {text:'333',css:'',link:'#'},
                    {text:'444',css:'',link:'#'},
                    {text:'555',css:'',link:'#'},
                    {text:'666',css:'',link:'#'},
                    {text:'777',css:'',link:'#'},
                    {text:'888',css:'',link:'#'}
                ]}
            ]},
            {text:'ddd',css:'',link:'#'}
        ]},
        {text:'eee',css:'',link:'http://www.bbsmax.com'}
    ];

    this.css = {
        menu:'menu',
        item_hasmenu:'item-hasmenu',
        item_over:'item-over',
        item_out:'item-out',
        item_focus:'item-focus'
    };
}

Menu.prototype.Init = function () {
};

Menu.prototype.Create = function () {
    var self = this;

    var c = this.container = PopUp.Panel('');
    PopUp.AddPopUp(c);
    CSS.AddClass(c, this.css.menu);

    var d = this.dataProvider;
    for (var i = 0, len = d.length; i < len; i++) {
        var item = oNode.CreateNode('div');
        oNode.AddNode(item, c);
        d[i].css && CSS.AddClass(item, d[i].css);
        oNode.AddNode(d[i].text, item);

        Events.AttachEvent(item, 'mouseover', function (e, th) {
            th = th || this;
            CSS.ReplaceClass(th, self.css.item_out, self.css.item_over);

            if (self.parent) {
                self.parent.current = self.menuItem;
                if (self.parent.current) CSS.AddClass(self.parent.current, self.parent.css.item_focus);
            }
        });
        Events.AttachEvent(item, 'mouseout', function (e, th) {
            th = th || this;
            CSS.ReplaceClass(th, self.css.item_over, self.css.item_out);
        });

        if (d[i].link) {
            item.link = d[i].link
            Events.AttachEvent(item, 'click', function (e, th) {
                th = th || this;
                self._Change();
                if (typeof th.link == 'function')
                    th.link();
                else 
                    location.href = th.link;
                self._Hide();
                self.RemoveAll();
                Events.CancelAll(e);
            });
            Events.AttachEvent(item, 'mouseover', function (e, th) {
                clearTimeout(Menu[self.sign]);
                if (self.current) CSS.RemoveClass(self.current, self.css.item_focus);
                if (self.child) {
                    Menu[self.sign] = setTimeout(function () {self.RemoveAllChild()}, 200);
                }
            });
        }
        else if (d[i].child) {
            CSS.AddClass(item, this.css.item_hasmenu);
            item.child = d[i].child;

            Events.AttachEvent(item, 'click', function (e, th) {
                clearTimeout(Menu[self.sign]);
                if (self.child) return;
                th = th || this;
                self._Change();
                self.CreateChildMenu(th.child, th);
                Events.CancelAll(e);
            });
            Events.AttachEvent(item, 'mouseover', function (e, th) {
                clearTimeout(Menu[self.sign]);
                th = th || this;

                if (self.child && self.child.dataProvider != th.child) {
                    self.RemoveAllChild();
                }
                if (!self.child) {
                    Menu[self.sign] = setTimeout(function () {self._Change();self.CreateChildMenu(th.child, th)}, 400);
                }
                else {
                    Menu[self.sign] = setTimeout(function () {self.child.RemoveAllChild()}, 200);
                }
                Events.CancelAll(e);
            });
        }
        CSS.AddClass(item, this.css.item_out);
    }
    PopUp.AddMask(c);
    //PopUp.ResetXY(c);
    //PopUp.ResetSize(c);

    // mouse down
    if (! this.parent) {
        this.sign = 'Menu_' + Global.Random();
        Menu[this.sign] = null;

        this.mouseDown = function (e) {
            var obj = $EO(e);

            if (self.button) {
                var _obj = obj;
                while (_obj) {
                    if (_obj == self.button) return;
                    _obj = _obj.parentNode;
                }
            }

            var _menu;
            var has = false;
            while (obj) {
                if (obj == self.container) {
                    has = true;
                    _menu = self;
                }
                else {
                    _menu = self.parent;
                    while (_menu) {
                        if (obj == _menu.container) {
                            has = true;
                            break;
                        }
                        _menu = _menu.parent;
                    }

                    _menu = self.child;
                    while (_menu) {
                        if (obj == _menu.container) {
                            has = true;
                            break;
                        }
                        _menu = _menu.child;
                    }
                }
                if (has) break;
                obj = obj.parentNode;
            }
            if (!has) {
                clearTimeout(Menu[self.sign]);
                self.RemoveAllChild(true);
                self._Hide();
            }
        };
        Events.AttachEvent(document, 'mousedown', this.mouseDown);

        // window resize
        this.resize = function () {
            clearTimeout(Menu[self.sign]);
            Events.RemoveEvent(window, 'resize', self.resize);
            self.RemoveAllChild(true);
            self._Hide();
        }
        Events.AttachEvent(window, 'resize', this.resize);
    }
};

// 設置位置
Menu.prototype.SetXY = function (x /* :Number */, y /* :Number */) {
    this.container.style.left = x + 'px';
    this.container.style.top = y + 'px';
    PopUp.ResetXY(this.container);
};

// 設置尺寸
Menu.prototype.SetSize = function (w /* :Number */, h /* :Number */) {
    this.SetW();
    this.SetH();
};
Menu.prototype.SetW = function (w /* :Number */) {
    this.container.style.width = w + 'px';
    PopUp.ResetSize(this.container);
};
Menu.prototype.SetH = function (h /* :Number */) {
    this.container.style.height = h + 'px';
    PopUp.ResetSize(this.container);
};

// 創建子菜單
Menu.prototype.CreateChildMenu = function (dataProvider, th) {
    if (this.child) this.child.RemoveAllChild(true);

    // 當前選擇項
    if (this.current) CSS.RemoveClass(this.current, this.css.item_focus);
    this.current = th;
    CSS.AddClass(th, this.css.item_focus);

    var child = this.child = new Menu();
    child.dataProvider = dataProvider;
    child.css = this.css;
    child.parent = this;
    child.sign = this.sign;
    child.menuItem = th;
    child.Create();
    child.SetXY(Global.GetOffsetLeft(th) + this.container.offsetWidth, Global.GetOffsetTop(th));
};

// 移除當前菜單
Menu.prototype.RemoveMenu = function () {
    this.RemoveEvent();
    PopUp.RemovePopUp(this.container);
};

// 刪除所有子孫菜單
Menu.prototype.RemoveAllChild = function (hasSelf) {
    var _menu = hasSelf ? this : this.child;
    while (_menu) {
        _menu.RemoveMenu();
        _menu = _menu.child;
        _menu && (_menu.parent = null);
    }
    this.child = null;
    if (this.current) {
        CSS.RemoveClass(this.current, this.css.item_focus);
        this.current = null;
    }
    if (hasSelf) this.RemoveMenu();
};

// 移除菜單樹
Menu.prototype.RemoveAll = function () {
    var p = this.parent;
    while (p) {
        p.RemoveMenu();
        p = p.parent;
    }
    this.RemoveAllChild(true);
};

// 移除事件
Menu.prototype.RemoveEvent = function () {
    if (this.mouseDown) {
        Events.RemoveEvent(document, 'mousedown', this.mouseDown);
        this.mouseDown = null;
    }
    if (this.resize) {
        Events.RemoveEvent(window, 'resize', this.resize);
        this.resize = null;
    }
};

// 菜單隱藏掉調用
Menu.prototype._Hide = function () {
    this.Hide();
};
Menu.prototype.Hide = function () {
};

// 菜單項選擇改變調用
Menu.prototype._Change = function () {
    this.Change();
};
Menu.prototype.Change = function () {
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区高清| 日韩午夜激情视频| 狠狠狠色丁香婷婷综合久久五月| 国产精品你懂的在线欣赏| 欧美高清精品3d| av中文字幕一区| 国产中文一区二区三区| 亚洲国产一区二区在线播放| 国产日韩欧美制服另类| 日韩欧美在线观看一区二区三区| 色综合天天做天天爱| 国产成人在线视频播放| 美腿丝袜亚洲一区| 亚洲一区视频在线| 亚洲三级免费观看| 欧美国产综合色视频| 日韩视频国产视频| 777精品伊人久久久久大香线蕉| 成人a区在线观看| 国产在线一区观看| 日本不卡视频在线| 午夜伊人狠狠久久| 亚洲一级片在线观看| 亚洲精品国产第一综合99久久| 亚洲国产精品精华液ab| 久久精品一区八戒影视| 精品国产人成亚洲区| 91精品国产一区二区人妖| 欧美人与性动xxxx| 欧美日韩国产欧美日美国产精品| 色吧成人激情小说| 99精品一区二区三区| 99热99精品| 色综合婷婷久久| 91看片淫黄大片一级| 欧美日韩国产综合视频在线观看 | 久久成人羞羞网站| 日韩高清不卡在线| 奇米精品一区二区三区四区| 秋霞电影一区二区| 免费日韩伦理电影| 久久精品国产一区二区| 精品一区二区在线看| 国精产品一区一区三区mba桃花 | 亚洲韩国精品一区| 亚洲第一狼人社区| 视频一区二区三区中文字幕| 午夜av区久久| 日本特黄久久久高潮| 美国一区二区三区在线播放| 久久成人久久爱| 国产主播一区二区三区| 国产成人精品免费一区二区| 99久久精品免费看国产免费软件| 91麻豆成人久久精品二区三区| 色老汉av一区二区三区| 欧美日韩免费观看一区三区| 欧美日韩国产bt| 久久亚洲二区三区| 国产精品久久影院| 亚洲激情在线播放| 五月天激情综合| 精品制服美女丁香| eeuss鲁一区二区三区| 91黄色免费观看| 91精品国产高清一区二区三区蜜臀| 91精品国产一区二区三区蜜臀| 久久亚洲精精品中文字幕早川悠里| 国产精品黄色在线观看| 亚洲va国产天堂va久久en| 蜜臀精品一区二区三区在线观看 | 国产高清亚洲一区| 一本色道a无线码一区v| 8x8x8国产精品| 久久久久久久电影| 最新高清无码专区| 日韩va亚洲va欧美va久久| 国产精品自拍一区| 在线观看欧美精品| 久久蜜桃av一区二区天堂| 亚洲激情一二三区| 黄色资源网久久资源365| 91亚洲国产成人精品一区二三| 9191久久久久久久久久久| 久久久久亚洲蜜桃| 亚洲电影在线播放| 国产成人综合自拍| 欧美日韩国产欧美日美国产精品| 国产欧美精品日韩区二区麻豆天美| 亚洲午夜精品网| 风间由美一区二区三区在线观看 | 麻豆视频观看网址久久| proumb性欧美在线观看| 欧美变态tickle挠乳网站| 亚洲欧美色图小说| 九色|91porny| 欧美日韩一二区| 成人免费小视频| 国产精品 欧美精品| 欧美剧情片在线观看| 日韩一区在线看| 国产精品资源网| 91 com成人网| 国产在线不卡一区| 3atv一区二区三区| 依依成人精品视频| 国产成人亚洲综合a∨婷婷| 日韩一区二区三区高清免费看看| 亚洲欧洲制服丝袜| 国产不卡在线视频| 精品美女一区二区| 免费成人在线观看| 欧美亚洲丝袜传媒另类| 亚洲视频狠狠干| 国产麻豆成人传媒免费观看| 日韩一区二区三区高清免费看看| 亚洲综合色视频| 欧洲色大大久久| 亚洲视频小说图片| www.欧美色图| 亚洲欧美综合色| aa级大片欧美| 日韩一区在线播放| 99久久精品免费| 亚洲欧洲另类国产综合| 成人app软件下载大全免费| 国产亚洲成av人在线观看导航 | 色999日韩国产欧美一区二区| 国产女人18水真多18精品一级做 | 日韩av一级电影| 欧美精品在欧美一区二区少妇| 亚洲五码中文字幕| 欧美色成人综合| 亚洲成人在线网站| 欧美日韩一二区| 日本午夜精品一区二区三区电影| 欧美日韩高清一区二区不卡| 亚洲图片自拍偷拍| 欧美丰满一区二区免费视频 | 香蕉成人啪国产精品视频综合网| 色综合久久99| 一片黄亚洲嫩模| 欧美精品视频www在线观看| 午夜精品久久久久久久久久 | 69精品人人人人| 日本亚洲免费观看| 欧美mv日韩mv| 国产成人综合亚洲网站| 国产精品国产三级国产a| 色综合夜色一区| 日韩中文字幕1| 2023国产精品| 成人h动漫精品一区二区| 亚洲精品午夜久久久| 欧美精品高清视频| 激情图片小说一区| 中文字幕的久久| 欧洲一区二区av| 久久黄色级2电影| 中文字幕巨乱亚洲| 色综合久久久网| 日韩和欧美一区二区三区| 亚洲精品一线二线三线无人区| 成人精品鲁一区一区二区| 最新久久zyz资源站| 欧美日韩国产综合一区二区三区| 久久国产精品第一页| 国产精品看片你懂得| 欧美美女bb生活片| 国产在线精品一区二区三区不卡| 综合在线观看色| 欧美一级一区二区| 成人av资源在线观看| 午夜国产不卡在线观看视频| 久久夜色精品一区| 在线中文字幕一区二区| 激情综合网激情| 日韩理论片中文av| 日韩午夜小视频| 97久久超碰国产精品| 免费精品视频在线| 亚洲三级理论片| 精品国精品自拍自在线| 91小视频免费观看| 久久国产精品99久久人人澡| 综合久久国产九一剧情麻豆| 日韩欧美一区中文| 色综合久久综合网97色综合| 久88久久88久久久| 午夜视频一区二区| 国产精品三级电影| 欧美一区二区三区播放老司机| 99久精品国产| 国产在线精品一区二区| 午夜精品一区二区三区三上悠亚| 国产目拍亚洲精品99久久精品| 欧美群妇大交群中文字幕| 91首页免费视频| 国产美女在线精品| 男女性色大片免费观看一区二区|