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

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

?? otree.lib.js

?? asp的bbs程序
?? JS
字號:
?/*
  By Hangring
  #2008.01.31#
  ---
  use list:
  > global.lib.js
  > css.lib.js
  > events.lib.js
  > node.lib.js
  > cookie.lib.js
  ---
  樹狀列表
  ---
  包含樣式:
  <link rel="stylesheet" href="css/tree.lib.css" type="text/css" />
*/

function oTree (el /* :HTMLElement */) {
    this.container = el;

    // container's id
    this.id = '';

    // cookie string
    this.cookies = '';
    // tree contruct
    this.tree = {};
    // enable cookie or not
    this.cookieAble = false;
    // enabel link to extend (`<li>`must be contain `<a>`)
    this.linkExtend = false;

    // current selected item
    this.selectedItem = null;

    this.css = {
        tree:'tree',
        second:'second',
        icon:'icon',
        // open status
        open:'open',
        // close status
        close:'close',
        // leaf node
        item:'item',
        /// node content
        content: 'content',
        // selected status
        selected: 'selected'
    };
}

oTree.prototype.Init = function () {
    this.Settle();
};

oTree.prototype.Settle = function () {
    var el = this.container;
    if (!oNode.IsNode(el)) el = this.container = $(this.container || this.id);
    CSS.AddClass(el, this.css.tree);
    this.id = this.container.id;

    //this.SetExtendableAll(el);
    this.Circle(el, '', true);

    if (this.cookieAble) {
        this.Retrieve();
        this.Reset();
    }
};

oTree.prototype.Circle = function (el /* :HTMLElement */, index /* :String */, first /* :Boolean */) {
    var self = this;
    var childs = el.childNodes;
    for (var i = 0, j = 0, len = childs.length; i < len; i++) {
        var child = childs[i];
        first || CSS.AddClass(child, this.css.second);
        if (oNode.IsNode(child)) {
            var _child = child.getElementsByTagName('ul');
            _child = _child && _child.length > 0 ? _child[0] : null;

            // content
            var _content = child.firstChild;
            oNode.RemoveNode(_content, child);
            var content = oNode.CreateNode('span');
            if (child.firstChild)
                oNode.InsertBefore(content, child.firstChild);
            else
                oNode.AddNode(content, child);
            CSS.AddClass(content, self.css.content);
            oNode.AddNode(_content, content);

            // icon
            var icon = oNode.CreateNode('span');
            oNode.InsertBefore(icon, child.firstChild);
            // index
            var _index = icon._index = (index != '' ? index + '_' : '') + j++;
            CSS.AddClass(icon, this.css.icon);
            CSS.AddClass(icon, _child ? this.css.close : this.css.item);

            if (_child) {
                this.Circle(_child, _index);

                CSS.SetDisplay(_child, false);
                icon.status = 'close';
                icon.list = _child;

                Events.AttachEvent(icon, 'click', function (e) {
                    extend(this, true);
                });

                if (self.linkExtend) {
                    var a = child.getElementsByTagName('a');
                    if (a.length > 0 && a[0].parentNode.parentNode == child) {
                        a = a[0];
                        a.icon = icon;
                        Events.AttachEvent(a, 'click', function (e) {
                            extend(this.icon, false);
                            if (a.href == location.href + '#')
                                Events.CancelEvent(e);
                        });
                    }
                }
            }
        }
    }

    function extend (th, icon) {
        if (self.selectedItem != th.parentNode) {
            if (self.selectedItem)
                CSS.RemoveClass(self.selectedItem, self.css.selected);
            self.selectedItem = th.nextSibling;
            CSS.AddClass(self.selectedItem, self.css.selected);
        }

        if (th.status == 'close') {
            th.status = 'open';
            CSS.ReplaceClass(th, self.css.close, self.css.open);
            CSS.SetDisplay(th.list, true);

            if (self.cookieAble) {
                // add current level
                var cookie_index = self.cookies;
                self.ReplaceIndex(cookie_index, th._index);
                if (cookie_index != '') {
                    cookie_index += ',';
                }
                self.cookies = cookie_index + th._index;

                // set cookie
                Cookie.Set(self.id, self.cookies);
            }
        }
        else {
            th.status = 'close';
            CSS.ReplaceClass(th, self.css.open, self.css.close);
            CSS.SetDisplay(th.list, false);

            if (self.cookieAble) {
                // delete current level
                var cookie_index = self.cookies;
                cookie_index = self.ReplaceIndex(cookie_index, th._index);
                self.cookies = cookie_index;

                // set cookie
                Cookie.Set(self.id, self.cookies);
            }
        }
    }
};

// 清理需要保存的索引
oTree.prototype.ReplaceIndex = function (indexs /* :String(index1,index2,index3) */, index /* :String */) {
    indexs = indexs.replace(',' + index + ',', ',');
    indexs = indexs.replace(new RegExp(',' + index + '$', 'gi'), '');
    indexs = indexs.replace(new RegExp('^' + index + ',', 'gi'), '');
    indexs = indexs.replace(new RegExp('^' + index + '$', 'gi'), '');
    return indexs;
};

// 重新獲取cookie的內容
oTree.prototype.Retrieve = function () {
    var cookies = Cookie.cookies[this.id];
    if (!cookies || cookies == 'undefined' || typeof cookies == 'undefined') cookies = '';
    this.cookies = cookies;
};

// 重設已記錄的展開的列表
oTree.prototype.Reset = function () {
    var cookies = this.cookies.split(',');

    this.Render(cookies);

    for (var i = 0, len = cookies.length; i < len; i++) {
        var extendAble = true;
        var levels = cookies[i].split('_');
        for (var j = 0, _len = levels.length; j < _len; j++) {
            levels[j] = levels[j].toString();
            if (this.tree[levels[j]] && !this.tree[levels[j]].on)
                extendAble = false;
        }
        if (extendAble) this.OpenTo(levels);
    }
};

// 呈現為樹
oTree.prototype.Render = function (cookies) {
    var tree;
    for (var i = 0, len = cookies.length; i < len; i++) {
        var l = cookies[i].split('_');
        tree = this.tree;
        for (var j = 0, _len = l.length; j < _len; j++) {
            if (typeof tree[l[j]] != 'object') tree[l[j]] = {on:false};
            if (typeof tree[l[j]].childs != 'object') {
                if (j != _len - 1) tree[l[j]].childs = {};
                else tree[l[j]].on = true;
                tree = tree[l[j]].childs;
            }
            else {
                tree[l[j]].on = true;
            }
        }
    }
    //alert(Dumper(this.tree));
};

// 展開某個列表
oTree.prototype.OpenTo = function (levels /* :Array([level1, level2, level3, ...]) */) {
    var node = null;
    for (var i = 0, len = levels.length; i < len; i++) {
        if (i == 0) node = this.container;

        for (var j = 0, k = 0, _len = node.childNodes.length; j < _len; j++) {
            if (node.childNodes[j].tagName && node.childNodes[j].tagName.toLowerCase() == 'li') {
                if (k == levels[i]) {
                    node = node.childNodes[j];
                    break;
                }
                k++;
            }
        }
        if (!node) continue;

        var span = node.getElementsByTagName('span')[0];
        span.status = 'open';
        CSS.ReplaceClass(span, 'close', 'open');
        node && (node = node.getElementsByTagName('ul')[0]);
        node && CSS.SetDisplay(node, true);
    }
};

// 設置樣式
oTree.prototype.SetStyle = function (style /* :String */, css /* :String */) {
    if (typeof css != 'string') return;
    this.css[style] = css;
};

// extendable all
oTree.prototype.SetExtendableAll = function () {
    var uls = this.container.getElementsByTagName('ul');

    for (var i = 0, len = uls.length; i < len; i++) {
        this.SetExtendableOne(uls[i]);
    }
};

// extendable one
oTree.prototype.SetExtendableOne = function (el /* :HTMLElement */) {
    var lis = el.childNodes;
    var ops = [];
    for (var i = 0, j = 0, len = lis.length; i < len; i++) {
        if (!oNode.IsNode(lis[i]) || lis[i].tagName.toLowerCase() != 'li')
            continue;
        ops[j] = {
            x: Global.GetOffsetLeft(lis[i]),
            y: Global.GetOffsetTop(lis[i]),
            index: i
        };

        j++;
    }

    var l = Global.GetOffsetLeft(el);
    var t = Global.GetOffsetTop(el);
    var w = el.offsetWidth + 50;
    var h = el.offsetHeight;

    el.style.position = 'relative';
    el.style.overflow = 'hidden';
    el.style.width = w + 'px';
    el.style.height = h + 'px';
    for (i = 0; i < j; i++) {
        var li = lis[ops[i].index];
        li.style.position = 'absolute';
        li.style.border = '1px solid #f00';
        li.style.bottom = h - (ops[i].y - t) - li.offsetHeight + 'px';
    }
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看网站黄不卡| 亚洲高清免费视频| 亚洲国产精品一区二区久久恐怖片| 美腿丝袜亚洲色图| 91丨九色丨蝌蚪富婆spa| 日韩欧美黄色影院| 亚洲一区二区三区激情| 成人黄色网址在线观看| 日韩欧美激情四射| 日本不卡一区二区| 在线精品亚洲一区二区不卡| 欧美激情中文不卡| 韩国精品免费视频| 日韩三级av在线播放| 视频一区在线视频| 91黄色免费观看| 一区二区中文视频| 国产激情一区二区三区| 欧美一区在线视频| 日产国产欧美视频一区精品| 欧美中文一区二区三区| 亚洲视频在线一区| 成人三级在线视频| 中文字幕欧美区| 国产不卡视频在线观看| 久久久久久亚洲综合| 国产一区二区三区四 | 久久精品国产久精国产| 欧美日韩夫妻久久| 午夜激情一区二区三区| 在线观看91精品国产入口| 中文字幕一区视频| 色综合视频一区二区三区高清| 日本一区二区三区高清不卡| 国产在线看一区| 2017欧美狠狠色| 国产高清亚洲一区| 欧美国产一区视频在线观看| 国产成人精品影院| 国产精品不卡在线| 一本大道久久a久久综合婷婷 | 久久蜜臀中文字幕| 国产成人综合亚洲91猫咪| 久久美女艺术照精彩视频福利播放| 韩国成人福利片在线播放| 久久综合精品国产一区二区三区| 精品一区二区三区视频| 久久综合狠狠综合久久综合88| 国产成人综合在线观看| 亚洲人成精品久久久久久| 欧洲av在线精品| 日韩极品在线观看| 久久久久久久综合色一本| caoporn国产一区二区| 亚洲一区二区三区视频在线播放| 欧美日韩国产经典色站一区二区三区| 免费观看久久久4p| 国产精品嫩草久久久久| 欧美午夜理伦三级在线观看| 秋霞午夜av一区二区三区| 国产日韩精品一区二区三区 | 国产很黄免费观看久久| 亚洲视频在线一区| 日韩午夜在线观看| thepron国产精品| 日本不卡的三区四区五区| 国产欧美一区二区精品性色超碰| 97久久超碰精品国产| 日本va欧美va精品| 国产精品的网站| 日韩一区二区三区观看| 91网站最新网址| 精品一区二区三区不卡| 夜夜嗨av一区二区三区网页| 337p日本欧洲亚洲大胆色噜噜| 一本色道久久加勒比精品| 蜜臀久久99精品久久久久久9| 亚洲欧洲av在线| 欧美电影免费提供在线观看| 97成人超碰视| 国产一区二区在线视频| 性做久久久久久免费观看欧美| 国产网红主播福利一区二区| 91精品中文字幕一区二区三区| 国产传媒欧美日韩成人| 久久精品国产精品青草| 午夜视频久久久久久| 亚洲图片你懂的| 久久精品视频免费| 日本大香伊一区二区三区| 一区二区中文字幕在线| 欧美α欧美αv大片| 欧美久久久久中文字幕| 91在线免费播放| 成人午夜激情片| 国产一区二区美女| 男男视频亚洲欧美| 亚洲国产三级在线| 亚洲欧洲美洲综合色网| 日本一区二区三区国色天香| 精品国产免费人成电影在线观看四季| 欧美日韩小视频| 欧美亚洲高清一区| 色欲综合视频天天天| www.亚洲免费av| 成人精品国产一区二区4080| 国产高清在线观看免费不卡| 国产在线播放一区二区三区| 另类的小说在线视频另类成人小视频在线| 亚洲激情五月婷婷| 亚洲精品乱码久久久久久黑人| 国产精品高清亚洲| 欧美韩日一区二区三区| 国产午夜精品一区二区三区嫩草 | 色拍拍在线精品视频8848| 高清免费成人av| 不卡一区二区三区四区| 不卡av免费在线观看| 成人h动漫精品一区二| 91免费视频大全| 色94色欧美sute亚洲线路二| 在线看国产一区| 555www色欧美视频| 日韩欧美高清一区| 久久久久久久久久久电影| 欧美一区午夜视频在线观看 | 久久精品视频免费| 中文字幕日本乱码精品影院| 国产精品成人一区二区三区夜夜夜| 中文字幕一区av| 亚洲国产婷婷综合在线精品| 日韩中文字幕区一区有砖一区| 奇米亚洲午夜久久精品| 久久精品国产99久久6| 国产麻豆午夜三级精品| 成人av网在线| 欧美日韩不卡在线| 精品电影一区二区| 国产精品传媒视频| 日产精品久久久久久久性色| 国产一区二区福利| 色综合视频在线观看| 欧美一区二区日韩| 中文字幕第一页久久| 亚洲精品国产无天堂网2021| 美国三级日本三级久久99| kk眼镜猥琐国模调教系列一区二区| 在线观看日韩电影| 精品国产一区二区三区久久久蜜月 | 免费人成在线不卡| 国产suv精品一区二区三区| 欧美性淫爽ww久久久久无| 精品国产乱码久久久久久1区2区| 中文字幕乱码日本亚洲一区二区| 亚洲影院免费观看| 国产剧情在线观看一区二区| 在线观看中文字幕不卡| 久久久久国产精品免费免费搜索| 一区二区三区精密机械公司| 激情伊人五月天久久综合| 欧美中文一区二区三区| 国产精品欧美久久久久无广告| 亚洲超碰97人人做人人爱| 国产成人精品1024| 欧美一级专区免费大片| 亚洲欧洲日产国码二区| 狠狠色2019综合网| 欧美日韩一级片网站| 国产精品传媒入口麻豆| 国产成人自拍在线| 91精品国产欧美一区二区成人| 亚洲视频在线观看一区| 国产成人在线视频网址| 日韩视频免费观看高清完整版 | 日本韩国视频一区二区| 久久久久久日产精品| 蜜臀av性久久久久蜜臀aⅴ| 欧美网站大全在线观看| 亚洲天堂免费看| 成人av网站大全| 久久无码av三级| 国产自产2019最新不卡| 91精品国产丝袜白色高跟鞋| 亚洲成a人片在线观看中文| 97se亚洲国产综合自在线| 国产欧美一二三区| 国产a精品视频| 国产丝袜欧美中文另类| 国精产品一区一区三区mba桃花| 91 com成人网| 男人的j进女人的j一区| 777午夜精品视频在线播放| 午夜精品福利视频网站| 欧美中文字幕一区| 亚洲国产一区二区在线播放| 欧美网站大全在线观看| 亚洲国产精品一区二区久久恐怖片 | 一区二区三区四区高清精品免费观看 | 亚洲成a人片在线观看中文| 欧美日韩一区二区欧美激情|