aboutsummaryrefslogtreecommitdiff
path: root/static/js/aquiencitas.js
diff options
context:
space:
mode:
Diffstat (limited to 'static/js/aquiencitas.js')
-rw-r--r--static/js/aquiencitas.js168
1 files changed, 168 insertions, 0 deletions
diff --git a/static/js/aquiencitas.js b/static/js/aquiencitas.js
new file mode 100644
index 0000000..0cf860f
--- /dev/null
+++ b/static/js/aquiencitas.js
@@ -0,0 +1,168 @@
+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); \ No newline at end of file