?? msgtree.js
字號(hào):
/*
##############################################
# BigMole Dynamic Discussion Board 2.0 #
# By Emil A Eklund (http://BigMole.5188.org/contact.html#emil) #
# and Erik Arvidson (http://BigMole.5188.org/contact.html#erik) #
# April 24, 1999 #
##############################################
# Feel free to use this script for personal #
# and non-profit organisation's websites, #
# as long as you're giving us credits for it #
# in other words, not removing nur modifying #
# this notice in any of the files it apperes #
##############################################
# For comercial use contact Emil or Erik #
##############################################
This is for the actual tree
*/
document.onclick = handleClick;
window.onload = initMessageTreePrime;
window.onresize = fixSize;
document.onmouseover = messageTreeOnMouseOver;
document.onmouseout = messageTreeOnMouseOut;
//preload(new Array("minusicon"), "images/", ".gif");
fixSubPadding(10);
fixScrollDivSize();
function fixSize() {
messageHeader.style.width = Math.max(document.body.clientWidth, 570);
scrollDiv.style.height = Math.max(document.body.clientHeight - messageHeader.offsetHeight, 0);
}
var currentMessageAnchorObject;
var currentMessageTimer;
// This works in conjunction with the css file that marks visited links
function markAsRead() {
if (currentMessageAnchorObject && currentMessageAnchorObject.style)
currentMessageAnchorObject.style.fontWeight = "normal";
}
function handleClick() {
var plusEl = getReal(window.event.srcElement, "className", "plus");
if (plusEl.className == "plus" && plusEl.children.length > 0) {
if (plusEl.children.tags("IMG")[0].src.indexOf("minus") != -1)
hideItem(plusEl);
else
showItem(plusEl);
return;
}
var el = getReal(window.event.srcElement, "tagName", "A");
if (el.tagName == "A") {
if (parent.messageframe.document && parent.messageframe.document.readyState == "complete") {
if (document.body.selectedItem != el) { // First selection
if (document.body.selectedItem != null)
unHighLight(document.body.selectedItem);
document.body.selectedItem = el;
highLight(el);
}
makeMessageVisible(el.parentElement);
var subject = el.children[0].innerHTML;
var startIndex = subject.indexOf(">");
var endIndex = subject.indexOf("<", startIndex);
if (endIndex == -1) endIndex = subject.length
subject = subject.substring(startIndex+1, endIndex)
var from = el.children[1].innerText;
var date = el.children[2].innerText;
var email = el.email;
var group = document.body.group;
var ticks = el.parentElement.date;
currentMessageAnchorObject=el;
parent.messageframe.loadMessage(el.href, subject, from, email, date, group, ticks);
}
else
alert(waitForViewerError);
return false;
}
var el = getReal(window.event.srcElement, "tagName", "INPUT");
if (el.tagName == "INPUT") {
addToIdList(el);
markTree(el);
}
}
function messageTreeOnMouseOver() {
var fromEl = getReal(window.event.fromElement, "tagName", "A");
var toEl = getReal(window.event.toElement, "tagName", "A");
if (fromEl == toEl) return;
if (toEl.tagName == "A") {
if (document.body.selectedItem != null && document.body.selectedItem == toEl && ieVersion()==5) {
toEl.style.color="white";
toEl.style.background="blue";
}
else
toEl.style.color="blue";
}
}
function messageTreeOnMouseOut() {
var fromEl = getReal(window.event.fromElement, "tagName", "A");
var toEl = getReal(window.event.toElement, "tagName", "A");
if (fromEl == toEl) return;
if (fromEl.tagName == "A") {
if (document.body.selectedItem != null && document.body.selectedItem == fromEl && ieVersion()==5) {
fromEl.style.color = "highlighttext";
fromEl.style.background = "highlight";
}
else
fromEl.style.color = "windowtext";
}
}
function makeMessageVisible(el) {
var tmp = el.parentElement;
while (tmp != null && tmp.className == "item") {
showItem(tmp.children[0]);
tmp = tmp.parentElement;
}
// el.scrollIntoView();
}
function initMessageTreePrime() {
parent.treeLoaded();
fixPlusSign();
fixSize();
numberOfChildItems();
el = document.all.messageTree;
el.tree = new Tree(el.children[0]);
el.tree.add(buildTree(el.children[0]));
scrollDiv.onscroll = new Function("messageHeader.style.marginLeft = -scrollDiv.scrollLeft");
fixExpandState();
//checkTopUrl();
}
var pluses = new Array();
function fixPlusSign() {
var index = 0;
var spans = document.all.tags("span");
var spansLength = spans.length;
for (var i=0; i<spansLength; i++) {
if (spans[i].className == "plus")
pluses[index++] = spans[i];
}
var plusesLength = pluses.length;
for (i=0; i<plusesLength; i++) {
if (pluses[i].parentElement.children.tags("div").length > 0) {
pluses[i].innerHTML = plusString;
// pluses[i].click();
}
}
var topItems = messageTree.children[0].children; // Note the <nobr>
var tpl = topItems.length;
for (var i=0; i<tpl; i++) {
if (topItems[i].className == "item") {
// topItems[i].children[0].click(); // Hide the sceond level
}
}
}
function fixExpandState() {
if (parent.tLoaded && parent.toolframe.document.all.toggleExpandCollapseButton.value)
expandCollapse();
}
function expandCollapse() {
if (expandedTree) {
for (var i=0; i<pluses.length; i++) {
hideItem(pluses[i]);
}
}
else {
for (var i=0; i<pluses.length; i++) {
showItem(pluses[i]);
}
}
expandedTree = !expandedTree;
}
function checkTopUrl() {//這個(gè)函數(shù)要大改一翻
if (parent.mLoaded && parent.tLoaded) {
if (parent.xLoaded) return; // Prevent external link from being loaded on refresh
var str = parent.location.href;
var displayIndex = str.indexOf("action=display");
if (displayIndex != -1) {
var args = new Array();
var as = str.substr(displayIndex + 15).split("&");
for (var i=0; i<as.length; i++) {
var tmp = as[i].split("=");
if (tmp.length != 2) return;
args[tmp[0]] = tmp[1];
}
var id = args["id"];
var group = args["group"];
if (group != null) {
if (document.body.group != group) {
parent.oeBar.loadTree(group);
parent.oeBar.setTimeout("selectRightItem()", 100);
}
else {
var loc = str.substring(0,displayIndex) + "action=preview&group=" + group + "&id=" + id;
loc = loc.replace(/\/\?action/g, "/" + cgiFile + "?action");
var cm = findNode(document.all.messageTree.tree, loc);
if (cm == null) return;
parent.toolframe.toggle(parent.toolframe.document.all.toggleExpandCollapseButton);
parent.toolframe.makePressed(parent.toolframe.document.all.toggleExpandCollapseButton);
expandCollapse();
cm.html.children.tags("A")[0].click();
parent.setXLoaded();
}
}
}
}
else
window.setTimeout("checkTopUrl()",100); // Busy wait is not nice :-(
}
// Create a tree for ease of use
function Tree(parent) {
this.parent = parent;
this.children = new Array();
this.nextSibbling = int_nextSibbling;
this.add = int_add;
this.href = new String();//用來(lái)保存我的節(jié)點(diǎn)標(biāo)志
this.html = null;
this.index = 0
var length = 0;
function int_add(t) {
this.children[length] = t;
this.children[length].parent = this;
this.children[length].index = length++;
}
function int_nextSibbling() {
if (this.parent != null)
return this.parent.children[this.index+1];
}
}
function buildTree(el) {
var is = new Array();
var ic = 0;
var cs = el.children;
var csl = cs.length;
for (var i=0; i<csl; i++) {
if (cs[i].className == "item") {
is[ic++] = cs[i];
}
}
var nTree = new Tree();
for (var j=0; j<ic; j++) {
nTree.add(buildTree(is[j]));
nTree.children[j].href = is[j].all.tags("A")[0].id;//href
nTree.children[j].html = is[j];
}
return nTree;
}
function nextMessage() {
var el = document.all.messageTree;
var loc = parent.frames["treeframe"].bbsid;
var cm = findNode(el.tree, loc);
if (cm == null) return; // No valid message
var nm;
if (cm.children.length > 0)
nm = cm.children[0];
else
nm = getNextSibbling(cm);
if (nm != null && nm.href != null) {
nm.html.all.tags("A")[0].click();
}
}
function nextThread() {
el = document.all.messageTree;
var loc = parent.frames["treeframe"].bbsid;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -