aboutsummaryrefslogblamecommitdiff
path: root/static/js/aquiencitas.js
blob: 0cf860f517af7a880fcb2b44e3a45720c3038a3a (plain) (tree)







































































































































































                                                                                                                         
var cur_url;
var linklist;
var linki;
var is_bbs;
var plimit = 5;
function getPostRange(t, n) {
  var posts, replies, s, ss, ee, rev = false;
  posts = [];
  replies = t.getElementsByClassName("reply");
  s = n.split('-');
  ss = parseInt(s[0]);
  ee = ss;
  if(s.length == 2) ee = parseInt(s[1]);
  if(ee<ss) { tmp=ss;ss=ee;ee=tmp; rev=true; }
  for(j = 0; j < replies.length; j++) {
    num = parseInt(replies[j].dataset.n);
    if(num > ee) break;
    if(num >= ss && num <= ee) {
      if(rev) posts.unshift(replies[j]);
      else posts.push(replies[j]);
    }
  }
  return posts;
}
function findAncestor (el) {
  while ((el = el.parentElement) && !el.className.startsWith("thread") && !el.className.startsWith("cont"));
  return el;
}
function getPostDivs(e) {
  if(is_bbs) {
    divs = [];
    t = findAncestor(e);
    s = e.getAttribute('href').split('/');
    r = s[s.length-1];
    rs = r.split(',');
    linki = 0;
    for(i=0;i<rs.length;i++) { divs.push.apply(divs, getPostRange(t, rs[i])); }
    return divs;
  } else {
    ele = document.getElementById('reply' + e.getAttribute('href').split('#')[1]);
    return [ele,];
  }
}
function get_pid(e) {
  return is_bbs ? e.dataset.n : e.id.substr(5);
}
function fill_links(e) {
  var divs = getPostDivs(e);
  if(!divs[0]) return;
  
  this_id = get_pid(e.parentNode.parentNode);
  
  for(i=0;i<divs.length;i++) {
    tid = get_pid(divs[i]);
    if (linklist[tid])
      continue;
    if (this_id == tid)
      continue;
    t = (is_bbs ? divs[i].getElementsByTagName("h4")[0] : divs[i]);
    bl = document.createElement('a');
    bl.href = cur_url + (is_bbs ? "/" : "#") + this_id;
    bl.textContent = '>>' + this_id;
    bl.addEventListener('mouseover', who_are_you_quoting, false);
    bl.addEventListener('mouseout', remove_quote_preview, false);
    if (!(qb = t.getElementsByClassName('quoted')[0])) {
      qb = document.createElement((is_bbs ? 'span' : 'div'));
      qb.className = 'quoted';
      qb.textContent = ' Citado por: ';
      if(is_bbs) {
        t.insertBefore(qb, t.getElementsByClassName("del")[0]);
        t.insertBefore(document.createTextNode(' '), t.getElementsByClassName("del")[0]);
      } else {
        p = t.getElementsByTagName("blockquote");
        p[p.length-1].insertAdjacentHTML('afterend', qb.outerHTML);
      }
      t.getElementsByClassName('quoted')[0].appendChild(bl);
    } else {
      qb.appendChild(document.createTextNode(' '));
      qb.appendChild(bl);
    }
    linklist[tid] = true;
  }
}
function who_are_you_quoting(e) {
  var parent, d, clr, src, cnt, left, top, width, maxWidth;
  e = e.target || window.event.srcElement;
  var divs = getPostDivs(e);
  if(!divs[0]) return;
  
  maxWidth = 500;
  cnt = document.createElement('div');
  cnt.id = 'q-p';
  width = divs[0].offsetWidth;
  if (width > maxWidth) {
    width = maxWidth;
  }
  
  for(i=0;i<divs.length&&i<plimit;i++) {
    src = divs[i].cloneNode(true);
    cnt.appendChild(src);
  }
  left = 0;
  top = e.offsetHeight + 1;
  parent = e;
  do {
    left += parent.offsetLeft;
    top += parent.offsetTop;
  } while (parent = parent.offsetParent);
  if ((d = document.body.offsetWidth - left - width) < 0) left += d;
  cnt.setAttribute('style', 'left:' + left + 'px;top:' + top + 'px;');
  document.body.appendChild(cnt);
}
function remove_quote_preview(e) {
  var cnt;
  if (cnt = document.getElementById('q-p'))
    document.body.removeChild(cnt);
}
/*function goTo(e) {
  e.preventDefault();
  var pst = this.textContent.split(/[-,]/)[0];
  pst = "r"+ pst.slice(2);
  pst = document.getElementById(pst);
  if (pst) pst.scrollIntoView(); 
}*/
function quotePreview() {
  if(localStorage.getItem("shobon_on") == "false") { return; }
  if(localStorage.getItem("shobon_preview") == "false" && localStorage.getItem("shobon_backlink") == "false") { return; }
  
  var i, q, replies, quotes;
  
  if(document.body.className && document.body.className != "res")
    is_bbs = true;
  else is_bbs = false;
  
  if(is_bbs) replies = document.getElementsByClassName('msg');
  else replies = document.getElementsByTagName('blockquote');
  
  urls = window.location.pathname.split("/");
  cur_url = urls[0] + "/" + urls[1] + "/" + urls[2] + "/" + urls[3];
  
  for (x = 0; x < replies.length; x++) {
    quotes = replies[x].getElementsByTagName('a');
    linklist = {};
    
    for (i = 0; i < quotes.length; i++) {
      q = quotes[i];
      if(q.textContent.length < 3 || !q.textContent.startsWith(">>")) continue;
      
      if(localStorage.getItem("shobon_preview") != "false") {
        q.addEventListener('mouseover', who_are_you_quoting, false);
        q.addEventListener('mouseout', remove_quote_preview, false);
      }
      
      if(localStorage.getItem("shobon_backlink") != "false") {
        fill_links(q);
      }
    }
  }
/*  if (document.body.className === "threadpage") {
    for (x = 0; x < replies.length; x++) {
      var q = replies[x].getElementsByTagName("a");
      for(var j=0;j<q.length;j++) {
        if(q[j].textContent.startsWith(">>")) q[j].addEventListener("click", goTo, false);
      }
    }
  }*/
}
document.addEventListener('DOMContentLoaded', quotePreview, false);