Solution Technologies
Управление сайтом без ограничений
{**
 * 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

*}
Copyright ©1998-2008 Солютекс. Все права защищены.
Этот сайт сделан в designLab | Работает на технологии XS2
Условия использования | О защите конфиденциальности