{**
* XS2:
*
* This file is developed by Solutecs, LLC for the purpose of the company
* and is provided together with XS2 Framework as and inherent part of the
* system. This file can be used on the terms of License Agreement.
*
* +7 (495) 585-0833 / 13 Rusakovskaya street, Moscow 107140 Russia
*
* @link http://www.solutecs.com
* @copyright ©1998-2007 Solutecs, LLC
* @version 1.XX
*}
{literal}
function startThread() {
initThread();
for(var id in messages){
messages[id][0] = document.getElementById("messageBar"+id);
messages[id][3] = document.getElementById("messageHeader"+id);
try{ messages[id][1] = document.getElementById("messageText"+id)}catch(e){}
try{ messages[id][2] = document.getElementById("messageChildren"+id)}catch(e){}}
templates.formSource = document.getElementById("formSource");
templates.formSource.getElementsByTagName("form")[0].target = "senderFrame";
templates.loaderBox = document.getElementById("loaderBox");
templates.loadCounter = 1;
}
function initMessage(id) {
try{ messages[id][3].onclick = function(v){return function(n){return function(){ toggleMessage(n); return false; }}(id); return false; }()}catch(e){}
try{ messages[id][0].parentNode.style.marginLeft = (templates.singleLevelShift*messages[id][4])+"px" }catch(e){}
setMessageNName(id, getMessageNName(id));
restoreMessageBar(id);
}
function outParseIcons(tag) {
var i, clone = tag;
try{
clone = clone.cloneNode(true);
for(i in clone.childNodes) {
try{
if(clone.childNodes[i].className.indexOf("parsedIcon")>=0){
clone.replaceChild(document.createTextNode(clone.childNodes[i].getAttribute("alt")), clone.childNodes[i]);
} else {
clone.replaceChild(document.createTextNode(""), clone.childNodes[i]);
}
}catch(e2){}
}
} catch(e1){}
return clone;
}
function outParse(tag) {try{return outParseIcons(tag).innerHTML || ""}catch(e){}; return "";}
function hideBlock(tag) { tag.style.display = "none"; return false}
function showBlock(tag) { tag.style.display = "block"; return false}
function visibleBlock(tag) {return 0!=tag.offsetHeight}
function toggleBlock(tag) {return visibleBlock(tag) ? hideBlock(tag) : showBlock(tag)}
function getHref(lnk, atr) { return "/forum/"+lnk.obj+"/"+lnk.met+"/"+atr+".htm" }
function setChildren(src, tags) {
src.innerHTML = "";
for(var i in tags) try{ src.appendChild(tags[i]) }catch(e){}
}
function wrapDelim(tag) {
x = document.createDocumentFragment();
try{
x.appendChild(document.createTextNode(templates.barItemDelim.left));
x.appendChild(tag);
x.appendChild(document.createTextNode(templates.barItemDelim.right));
}catch(e){};
return x;
}
function getLink(href, label) {
var x = document.createElement("a");
try{
x.setAttribute("href", href);
x.appendChild(document.createTextNode(label));
}catch(e){};
return x
}
function getButton(func, param, label) {
var x = document.createTextNode("span");
try{
x = document.createElement("button");
x.onclick = function(e){eval(func+"("+param+")"); return false};
x.appendChild(document.createTextNode(label));
}catch(e){};
return x;
}
function getControl(func, param, label) {
var x = document.createElement("span");
try{
x.style.cursor = "pointer";
x.onclick = function(e){eval(func+"("+param+")"); return false};
x.appendChild(document.createTextNode(label));
}catch(e){};
return x;
}
function getMessageNName(id) {
return ((messages[id][7] || !messages[id][8]) ? "" : (outParse(messages[id][3]) || ""));
}
function getMessageForm(id) {
try{ return messages[id][0].getElementsByTagName("form")[0]} catch(e){}; return null
}
function setMessageForm(id) {
setChildren(messages[id][0],
[templates.formSource.cloneNode(true),
getButton("sendMessage", id, templates.sendLabel),
getButton("restoreMessageBar", id, templates.cancelLabel)])
}
function restoreMessageBar(id) {
setChildren(messages[id][0],
[wrapDelim(getLink(getHref(hrefs.message, id), templates.showPageLabel)),
(messages[id][10] ? wrapDelim(getLink(getHref(hrefs.author, messages[id][10]), templates.showUserInfoLabel)) : null),
wrapDelim(getControl("addMessage", id, templates.replyLabel)),
(messages[id][10]>0 && currentUser==messages[id][10] ? wrapDelim(getControl("editMessage", id, templates.editLabel)) : null),
(messages[id][10]>0 && currentUser==messages[id][10] ? wrapDelim(getControl("deleteMessage", id, templates.deleteLabel)) : null),
(messages[id][11]>0 ? wrapDelim(getControl("toggleBranch", id, templates.branchLabel)) : null) ])
}
function toggleMessageBar(id){toggleBlock(messages[id][0])}
function toggleBranch(id){toggleBlock(messages[id][2])}
function toggleMessage(id){
if("undefined"==typeof(messages[id]) || !id || !messages[id] || messages[id][7]) return false;
toggleMessageBar(id);
if(visibleBlock(messages[id][1])!=visibleBlock(messages[id][0])) toggleBlock(messages[id][1]);
try{
if("not"==messages[id][1].getAttribute("loaded") && !messages[id][7]){
loading = false;
loadMessage(id);
}
}catch(e){}; return false
}
function loadMessage(id) {
if("undefined"==typeof(messages[id]) || !id || !messages[id] || messages[id][7] || "yes"==messages[id][1].getAttribute("loaded")) return false;
if(!loading){
loading = true;
try{
messages[id][1].innerHTML = templates.loadingLabel;
var loader = document.createElement("script");
loader.setAttribute("type", "text/javascript");
loader.setAttribute("id", "messageLoader"+id);
++templates.loadCounter;
loader.setAttribute("src", getHref(hrefs.loader, id+"."+templates.loadCounter));
templates.loaderBox.appendChild(loader);
}catch(e){};
setTimeout(function() {
return function(n) {
window.loading = false;
try{ templates["loaderBox"].removeChild(document.getElementById("messageLoader"+n))}catch(e){}
if(!messages[n][1]) return false;
try{
if(0!=messages[n][1].offsetHeight && "not"==messages[n][1].getAttribute("loaded")){
hideBlock(messages[n][1]);
showBlock(messages[n][0])}}catch(e){}}(id)},
templates.loadingTimeout);
}else{
setTimeout(function(){
loadMessage(id)}, templates.loadingTimeout)}
}
function insertMessage(ParId, NodId) {
var m = document.createDocumentFragment(),
k = document.createElement("div"),
n = document.createElement("h4");
k.appendChild(n);
n = document.createElement("div");
n.setAttribute("loaded", "not");
k.appendChild(n);
n = document.createElement("div");
n.className = "messageBar";
n.style.display = "none";
k.appendChild(n);
m.appendChild(k);
k = document.createElement("div");
k.className = "messageChildren";
m.appendChild(k);
messages[ParId][2].appendChild(m);
messages[NodId] = [messages[ParId][2].lastChild.previousSibling.lastChild,
messages[ParId][2].lastChild.previousSibling.firstChild.nextSibling,
messages[ParId][2].lastChild,
messages[ParId][2].lastChild.previousSibling.firstChild,
messages[ParId][4] + 1,
1,
1,
0,
1,
1,
currentUser,
0];
initMessage(NodId);
toggleMessage(NodId);
}
function setMessageNName(id, html) {
if("undefined"==typeof(messages[id]) || !id || !messages[id]) return false;
try{
messages[id][8] = (("undefined"!=typeof(html) && ""!=html) ? true : false);
messages[id][3].style.color = ((!messages[id][7]) ? (!messages[id][8] ? "darkgreen" : "") : "darkred");
messages[id][3].innerHTML = (messages[id][7]
? templates.deletedMessageLabel
: ((messages[id][8]
? html
: templates.emptyMessageNNameLabel)
+ (messages[id][9] ? "" : templates.emptyMessageTextLabel)
+ (templates.authorNNameLabel.begin + users[messages[id][10]] + templates.authorNNameLabel.end))) }catch(e){}
}
function setMessageText(id, html) {
if(!id || "undefined"==typeof(messages[id]) || !messages[id] || messages[id][7]) return false;
try{
messages[id][9] = ((""!=html && null!=html && "undefined"!=html) ? true : false);
messages[id][1].innerHTML = (messages[id][9] ? html : "");
messages[id][1].setAttribute("loaded", "yes");
}catch(e){}
}
function setMessage(id, NName, Text, ParseIcons, ParseLineBreaks, Deleted, Author) {
if(!id) return false;
if("undefined"==typeof(messages[id])) return false;
try{
messages[id][5] = ParseIcons;
messages[id][6] = ParseLineBreaks;
messages[id][7] = Deleted;
messages[id][10] = Author;
}catch(e){}
setMessageText(id, Text);
setMessageNName(id, NName);
}
function refreshMessage(id) {
setTimeout(function() {
try{
hideBlock(messages[id][0]);
hideBlock(messages[id][1]);
messages[id][1].setAttribute("loaded", "not");
toggleMessage(id);
}catch(e){}},
templates.loadingTimeout);
}
function sendMessage(id) {
if(!id || "undefined"==typeof(messages[id]) || !messages[id] || messages[id][7]) return false;
var form = getMessageForm(id), action = "";
if(form){
try{
action = form.action.value;
form.ParseIcons.value = form._ParseIcons.checked ? "1" : "0";
form.ParseLineBreaks.value = form._ParseLineBreaks.checked ? "1" : "0";
form.NType.value = "message";
form.NFlag.value = 1;
form.submit()}catch(e){}
switch(action){
case "deleteMessage":
case "editMessage":
try{ messages[id][1].innerHTML = templates.sendingLabel }catch(e){}
refreshMessage(id);
break;
case "addMessage":
break}}
restoreMessageBar(id)
}
function editMessage(id) {
if(!id || "undefined"==typeof(messages[id]) || !messages[id] || messages[id][7]) return false;
setMessageForm(id);
var form = getMessageForm(id);
if(form && !messages[id][7])
try{
if(messages[id][3] && messages[id][8]) form.NName.value = outParse(messages[id][3]);
if(messages[id][1] && messages[id][9]) form.Text.value = outParse(messages[id][1]);
if(messages[id][5]<1) form._ParseIcons.checked = false;
if(messages[id][6]<1) form._ParseLineBreaks.checked = false;
form.NodId.value = id;
form.action.value = "editMessage";
}catch(e){}
}
function deleteMessage(id) {
if(!id || "undefined"==typeof(messages[id]) || !messages[id] || messages[id][7]) return false;
if(confirm(templates.deleteConfirm)){
editMessage(id);
var form = getMessageForm(id);
if(form) try{form.action.value = "deleteMessage"}catch(e){}
sendMessage(id)}
}
function addMessage(id) {
if(!id || "undefined"==typeof(messages[id]) || !messages[id] || messages[id][7]) return false;
setMessageForm(id);
var form = getMessageForm(id);
if(form)
try{
form.ParId.value = id;
form.action.value = "addMessage";
}catch(e){}
}
window.onload = startThread;
{/literal}
{*
0: id=messageBar+NodId
1: id=messageText+NodId
2: id=messageChildren+NodId
3: id=messageHeader+NodId
4: message.NDeep-thread.NDeep
5: message.ParseIcons
6: message.ParseLineBreaks
7: message.Deleted
8: hasNName
9: hasText
10: Author NodId
11: hasChildren
*}
|