Improve logsoku for smart phone

display image directly, add links that show a certain accout of floor

// ==UserScript==
// @name           Improve logsoku  for smart phone
// @description    display image directly, add links that show a certain accout of floor
// @include        https://www.logsoku.com/*
// @include        https://sp.logsoku.com/*
// @include        http://*.2ch.*
// @author         yechenyin
// @version        0.92.4
// @namespace 	   https://greasyfork.org/scripts/3497
// ==/UserScript==


/**************************以下参数可自定义修改**************************/

//图片显示默认缩放比例
var percent = 0.5;

//图片显示最大高度(像素)
var image_max_height = 420;

//图片显示最大宽度(像素)
var image_max_width = 600;

//图片显示最小高度(像素)
var image_min_height = 240;

//显示显示最小宽度(像素)
var image_min_width = 320;

//弹出图片的原图,要取消此功能请将true改为false
var popup_enable = true;

//点击图片后隐藏图片,要取消此功能请将true改为false
var click_to_hide_image = true;


//
var phone_thread_comments = 334;

//
var contain_floores = 250;

//
var pc_searched_links_contain_comments = 500;

//
var latest_floors = 150;

var block_floors_contain_blacklist_image = true;

var search_result_latest_floors = 15;

/****************************************************/
if (!localStorage)
  alert('This browser does not support localStorage!');
if (localStorage.last_read === undefined)
  localStorage.last_read = '';
if (localStorage.filter === undefined)
  localStorage.filter = '';
if (localStorage.blacklist_ids === undefined)
  localStorage.blacklist_ids = '';
if (localStorage.blacklist_images === undefined)
  localStorage.blacklist_images = '';
window.onerror = function(msg, url, num) {
  //alert(num+' '+msg);
};

if (location.href.match("https://sp.logsoku.com/search")) {
  $('head').append($('<style>').text('iframe' + ' {display:none!important}'));
  for (var i = 0; i < $("a.search_thread_title").length; i++) {
    var thread = $("a.search_thread_title").eq(i);
    last_comment = thread.next().find(".res span").text().match(/\d+/)[0];
    var href = thread[0].href + "1-" + last_comment;
    var all_comments = $("<a>", {
      href: href
    });
    thread.next().find(".res span").wrap(all_comments);


    var time = thread.next().find(".date").text();
    time = time.replace(/\d{4}-/, "").replace(/:\d{2}\s/, " ");
    time = time.replace(/\d{4}-/, "").replace(/:\d{2}\s$/, " ");
    thread.next().find(".date").text(time);

  }


  get_last_read("a.search_thread_title");
// openDB().onsuccess  = function(event){
//   var db = event.target.result;
//   var transaction = db.transaction(["read"],"readwrite");
//   var store = transaction.objectStore("read");
//
//   for (var i=0; i<$("a.search_thread_title").length; i++) {
//     (function(i) {
//       var thread = $("a.search_thread_title").eq(i);
//       var url = thread[0].href.replace("https://sp.logsoku.com", "");
//       var request = store.get(url);
//       request.onsuccess = function(event){
//         if (event.target.result) {
//           var start = event.target.result.last + 1;
//           if (start >1000)
//           start = 1001;
//           var end = start + phone_thread_comments;
//           thread[0].href = url + start + "-" + end;
//         } else {
//           thread[0].href = url + "1-" + phone_thread_comments;
//         }
//         console.log(i + ":" + thread[0].href);
//       };
//     })(i);
//   }
// };
}



jQuery.fn.loaded = function(action) {
  var target = this;
  if ($(this.selector).length > 0) {
    console.log($(this.selector).length + ' ' + this.selector + " is loaded");
    setTimeout(function() {
      action();
    }, 300);
  } else
    setTimeout(function() {
      target.loaded(action);
    }, 100);
};

jQuery.fn.handle = function() {
  this.each(function() {
    if (this.href && this.href.indexOf("http://l.moapi.net/") === 0) {
      this.href = this.href.replace("http://l.moapi.net/", '');
      this.href = this.href.replace(/\w*:?\/\//, "http://");
    }
    if (this.href && this.offsetTop > document.body.scrollTop - window.screen.height / 2 && this.offsetTop < document.body.scrollTop + window.screen.height * 3) {
      if (localStorage.blacklist_images && localStorage.blacklist_images.indexOf(this.href) > 0) {
        if (block_floors_contain_blacklist_image) {
          $(this).parent().prev().hide();
          $(this).parent().hide();
        }
        else
          $(this).hide();
      } else if (this.href.match(/\.(jpg|jpeg|bmp|gif|png|JPG|JPEG|BMP|GIF|PNG)(:orig)?$/) && localStorage.filter != "all_comments_hide_images") {
        console.log(this.href);
        $(this).replaceWith($("<img>", {
          src: this.href
        }));
      }
    }
  });
};

if (location.href.indexOf("https://sp.logsoku.com/r/") === 0) {
  $('head').append($('<style>').text('iframe' + ' {display:none!important}'));

  if (location.href[location.href.lastIndexOf("/") + 1] != "l")
    var first = parseInt($(".thread_2ch>dd").eq(0).attr("id").replace("comment_", ""));
  else
    var first = parseInt($(".thread_2ch>dd").eq(1).attr("id").replace("comment_", ""));
  var last = parseInt($(".thread_2ch>dd").last().attr("id").replace("comment_", ""));
  if (last > 1000)
    last = 1001;
  var amount = parseInt($(".navbar").prev().text().match(/^\d+/)[0]);
  if (amount > 1000)
    amount = 1000;

  $(".pagination li").remove();
  var href = location.href.substring(0, location.href.lastIndexOf("/") + 1);

  var link = null;
  if (first - phone_thread_comments >= 1)
    link = $("<a>", {
      text: "<",
      href: href + (first - phone_thread_comments).toString() + "-" + (first - 1).toString()
    });
  else if (first >= 1)
    link = $("<a>", {
      text: "<",
      href: href + "1" + "-" + (first - 1).toString()
    });
  if (link)
    $(".pagination ul").append(link.wrap($("<li>")));

  for (var i = 0; i < amount / phone_thread_comments; i++) {
    link = $("<a>", {
      text: (i + 1).toString(),
      href: href + (i * phone_thread_comments + 1).toString() + "-" + (i * phone_thread_comments + phone_thread_comments).toString()
    });
    $(".pagination ul").append(link.wrap($("<li>")));
  }

  var next_link = null;
  if (last + phone_thread_comments < amount)
    next_link = $("<a>", {
      text: ">",
      href: href + (last + 1).toString() + "-" + (last + phone_thread_comments).toString()
    });
  else if (last + 1 <= amount)
    next_link = $("<a>", {
      text: ">",
      href: href + (last + 1).toString() + "-" + amount
    });
  if (next_link)
    $(".pagination ul").append(next_link.wrap($("<li>")));

  var filter_menu = $("<li>", {
    class: "dropdown open filter"
  });
  var innerHTML = "<a href='#' class='dropdown-toggle'>过滤<b class='caret'></b></a>";
  innerHTML += "<ul class='dropdown-menu filter-menu' style='display:none'>";
  innerHTML += "<li id='all_comments'><a>全部</a></li><li class='divider'></li>";
  innerHTML += "<li id='all_comments_hide_images'><a>不显示图片</a></li><li class='divider'></li>";
  innerHTML += "<li id='only_reply_and_links'><a>只含回复及链接</a></li><li class='divider'></li>";
  innerHTML += "<li id='only_links_and_images'><a>只含链接及图片</a></li><li class='divider'></li>";
  innerHTML += "<li id='only_images'><a>只含图片</a></li> </ul>";
  filter_menu.html(innerHTML);
  filter_menu.insertBefore($("ul.nav>li:last-child").eq(0));

  $("li.filter>a").click(function() {
    $(this).next().toggle();
  });

  filter_comments();
  $("ul.filter-menu").on("click", "li", function(filter) {
    localStorage.filter = this.id;
    filter_comments();
  });


  record_last_read();
  get_last_read("dd>a[href^='/']");




  $(".thread dt br").remove();
  $(".thread dt .nem, dt>b").remove();
  $(".thread dt").append($("<span>", {
    text: "block this ID",
    click: blockId
  }));
  $(".thread dt").append("&nbsp;&nbsp;");
  $(".thread dt").append($("<span>", {
    text: "block images blow",
    click: blockImages
  }));
  $(".thread dt").each(function() {
    var id = $(this).find("a[class^='id']").text();
    if (localStorage.blacklist_ids && localStorage.blacklist_ids.indexOf(id) > 0) {
      $(this).next().remove();
      $(this).remove();
    }
  });

  $(".thread dd>a").handle();
  $(window).scroll(function() {
    $(".thread dd>a").handle();
  });


  $(".anchor_res>a").click(function() {
    $(this).parent().load(this.href + " .thread_2ch>dd");
    return false;
  });



  $("#thread-recommend-list-display a").loaded(function() {
    var recommend = $("#thread-recommend-list-display");
    var title = $('h1.title').eq(0).text();
    if (title.indexOf('★') > 0)
      common = title.substring(0, title.indexOf('★'));
    else if (title.indexOf('☆') > 0)
      common = title.substring(0, title.indexOf('★'));
    else {
      var title1 = recommend.find("a").eq(0).text();
      var title2 = recommend.find("a").eq(1).text();
      for (i = 0; i < title1.length; i++)
        if (title2[i] != title1[i])
          break;
      common = title1.substring(0, i - 1);
    }
    console.log('query:' + common);

    recommend.prepend($("<div>", {
      css: {
        display: "none"
      }
    }));
    recommend.children().first().load("https://sp.logsoku.com/search?q=" + common + " .search-list", function() {
      for (i = 0; i < recommend.find("li a").length; i++) {
        recommend.find("li a")[i].href = $(".search-list .column>a")[i].href;
        recommend.find("li a")[i].textContent = $(".search-list .column>a")[i].textContent;
      }

      recommend.find("li").each(function() {
        if (location.href.match($(this).find("a")[0].href)) {
          $(this).css({
            'border': '2px solid #AFAE93',
            'border-top': '1px solid #AFAE93'
          });
        }
      });

      get_last_read("#thread-recommend-list-display a");
      recommend.find("li a").each(function() {
        if (this.href.match(/\d+(?=-)/)[0] > 1000) {
          $(this).css({
            'color': '#8F8E7D'
          });
        }
      });

    });
  });

}



function get_last_read(links) {
  for (var i = 0; i < $(links).length; i++) {
    var thread = $(links)[i];
    var url = thread.href.replace("https://sp.logsoku.com", "");
    var index = -1;
    if (localStorage.last_read)
      index = localStorage.last_read.indexOf(url);
    if (index > 0) {
      var last_read = parseInt(localStorage.last_read.substr(index - 3, 3));
      if (last_read === 0)
        last_read = 1000;
      var start = last_read + 1;
      var end = start + phone_thread_comments;
      console.log(last_read + ' is read last time for ' + url);

      thread.href = url + start + "-" + end;
    } else {
      thread.href = url + "1-" + phone_thread_comments;
    }
    console.log(i + "::" + thread.href);
  }
}


function record_last_read() {
  var url = location.href.replace("https://sp.logsoku.com", "");
  url = url.substring(0, url.lastIndexOf("/") + 1);
  var last_read = $(".thread_2ch>dt strong").last().text();
  if (last_read.length == 1)
    last_read = '00' + last_read;
  if (last_read.length == 2)
    last_read = '0' + last_read;
  if (last_read.length == 4)
    last_read = '000';
  console.log(last_read + ' is read for' + url);

  var index = -1;
  if (localStorage.last_read)
    index = localStorage.last_read.indexOf(url);
  if (index < 0) {
    localStorage.last_read += last_read + url + "\n";
  } else {
    localStorage.last_read = localStorage.last_read.substring(0, index - 4) + last_read + localStorage.last_read.substr(index);
  }
  console.log('last read:' + localStorage.last_read);

//   openDB().onsuccess  = function(event){
//     var db = event.target.result;
//     var transaction = db.transaction(["read"],"readwrite");
//     transaction.oncomplete = function(event) {
//       console.log("Success");
//     };
//     transaction.onerror = function(event) {
//       alert("Error");
//     };
//
//
//
//     var store = transaction.objectStore("read");
//     var request = store.get(url);
//     request.onsuccess = function(event){
//       if (!request.result) {
//         console.log("Adding : "+ url + " : " + last_read);
//         store.add({url: url, last: parseInt(last_read)});
//       } else {
//         console.log("Updating : "+event.target.result.last + " to " + last_read);
//         request.result.last = parseInt(last_read);
//         store.put(request.result);
//       }
//     };
//
//   };
//
}

function openDB() {
  var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
  if (!indexedDB)
    console.log("你的浏览器不支持IndexedDB");

  var request = indexedDB.open("2chDB", 1);
  var db;
  request.onerror = function(event) {
    alert("打开DB失败" + event);
  };
  request.onupgradeneeded = function(event) {
    console.log("Upgrading");
    db = event.target.result;
    var objectStore = db.createObjectStore("read", {
      keyPath: "url"
    });
    objectStore.createIndex("last", "last", {
      unique: false
    });
  };
  return request;
}

function blockId() {
  var id = $(this).parent().find("a[class^='id']").text();
  localStorage.blacklist_ids += id + ",";

  $("dt").each(function() {
    var id = $(this).find("a[class^='id']").text();
    if (localStorage.blacklist_ids.indexOf(id) > 0) {
      $(this).next().hide();
      $(this).hide();
    }
  });
}

function blockImages() {
  var images = $(this).parent().next().find("img");
  localStorage.blacklist_images += images[0].src + " ";

  $("dt").each(function() {
    var images = $(this).next().find("img");
    for (i = 0; i < images.length; i++) {
      if (localStorage.blacklist_images.indexOf(images[i].src) > 0) {

        if (block_floors_contain_blacklist_image) {
          $(this).next().hide();
          //$(this).hide();
          break;
        } else
          $(images[i]).hide();
      }
    }
  });
}

function filter_comments() {
  if (this.nodeName == "li" && this.id !== undefined)
    localStorage.filter = this.id;

  $("ul.filter-menu>li").each(function() {
    if (this.id == localStorage.filter)
      $(this).css("background", "#d8edff");
    else
      $(this).css("background", "#fff");
  });
  $("ul.filter-menu").hide();

  if (localStorage.filter == "all_comments") {
    $("dd[id^=comment]").each(function() {
      $(this).prev().show();
      $(this).show();
    });
  } else if (localStorage.filter == "only_reply_and_links") {
    $("dd[id^=comment]").each(function() {
      if ($(this).find("a, img").length === 0) {
        $(this).prev().hide();
        $(this).hide();
      } else {
        $(this).prev().show();
        $(this).show();
      }
    });
  } else if (localStorage.filter == "only_links_and_images") {
    $("dd[id^=comment]").each(function(index) {
      if ($(this).find("a[href^='http:'], img").length === 0 && index !== 0) {
        $(this).prev().hide();
        $(this).hide();
      } else {
        $(this).prev().show();
        $(this).show();
      }
    });

  } else if (localStorage.filter == "only_images") {
    $("dd[id^=comment]").each(function() {
      if ($(this).find("img").length === 0) {
        $(this).prev().hide();
        $(this).hide();
      } else {
        $(this).prev().show();
        $(this).show();
      }
    });
  }

}

function pc_filter_comments() {
  if (this.nodeName !== undefined && this.id !== undefined)
    localStorage.filter = this.id;

  $("ul.filter-menu>li").each(function() {
    if (this.id == localStorage.filter)
      this.css("background", "#d8edff");
    else
      this.css("background", "#fff");
  });
  $("ul.filter-menu").hide();

  if (localStorage.filter == "all_comments") {
    $("dd[id^=comment]").each(function() {
      $(this).prev().show();
      $(this).show();
    });
  } else if (localStorage.filter == "only_reply_and_links") {
    $("dd[id^=comment]").each(function() {
      if ($(this).find("a, img").length === 0) {
        $(this).prev().hide();
        $(this).hide();
      } else {
        $(this).prev().show();
        $(this).show();
      }
    });
  } else if (localStorage.filter == "only_links_and_images") {
    $("dd[id^=comment]").each(function() {
      if ($(this).find("a[href^='http:'], img").length === 0) {
        $(this).prev().hide();
        $(this).hide();
      } else {
        $(this).prev().show();
        $(this).show();
      }
    });

  } else if (localStorage.filter == "only_images") {
    $("dd[id^=comment]").each(function() {
      if ($(this).find("img").length === 0) {
        $(this).prev().hide();
        $(this).hide();
      } else {
        $(this).prev().show();
        $(this).show();
      }
    });
  }

}

if (location.href.match("https://www.logsoku.com/search")) {
  var results = document.getElementById("search_result_threads");
  if (results) {
    var titles = results.getElementsByClassName("title");

    for (i = 0; i < titles.length; i++) {
      var link = titles[i].children[0];
      if (link)
        link.href = link.href + "l" + search_result_latest_floors;
    }
  }
}


if (location.href.match("https://www.logsoku.com/r/")) {
  $("div.comment").each(function() {
    if ($(this).find("a[href^='http://l.moapi.net/'], img").length === 0)
      $(this).parent().hide();
    else
      $(this).parent().show();
  });

  var links = document.links;
  for (j = 0; j < links.length; j++) {
    links[j].href = links[j].href.replace("http://l.moapi.net/", "");

    if (links[j].innerHTML.match(/.\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG)(:orig)?$/)) {
      var img = document.createElement("img");
      if (links[j].innerHTML.match(/\w*:?\/\//))
        img.src = links[j].innerHTML.replace(/\w*:?\/\//, "http://");
      else
        img.src = "http://" + links[j].innerHTML;

      img.style.display = "none";
      img.onload = resize;
      if (click_to_hide_image)
        img.onclick = function() {
          this.style.display = "none";
        };
      if (popup_enable) {
        var container = document.createElement("div");
        container.style.display = "inline";
        container.onmouseover = function() {
          this.children[0].style.display = "inline";
        };
        container.onmouseout = function() {
          this.children[0].style.display = "none";
        };
        container.appendChild(img);
      }
      links[j].parentNode.replaceChild(container, links[j]);
      j--;
    }

  }
  //pc_filter_comments();


  //    var filter_menu = $("<li>", {class:"dropdown open filter"});
  //    var innerHTML = "<a href='#' class='dropdown-toggle'>过滤<b class='caret'></b></a>";
  //    innerHTML += "<ul class='dropdown-menu filter-menu' style='display:none'>";
  //    innerHTML += "<li id='all_comments'><a>全部</a></li><li class='divider'></li>";
  //    innerHTML += "<li id='all_comments_hide_images'><a>不显示图片</a></li><li class='divider'></li>";
  //    innerHTML += "<li id='only_reply_and_links'><a>只含回复及链接</a></li><li class='divider'></li>";
  //    innerHTML += "<li id='only_links_and_images'><a>只含链接及图片</a></li><li class='divider'></li>";
  //    innerHTML += "<li id='only_images'><a>只含图片</a></li> </ul>";
  //    filter_menu.html(innerHTML);
  //    filter_menu.insertBefore($("ul.nav>li:last-child"));
  //    var filter_clicked = function (filter) {
  //	localStorage.filter = filter;
  //	filter_comments();
  //    }
  //
  //    $("li.filter>a").click(function() {
  //	$(this).next().toggle();
  //    });
  //
  //
  //    $("ul.filter-menu").on("click", "li", filter_comments);

  $(".thread-nav>div").append($("<div>", {
    class: "icheckbox_line-grey",
    text: "只打开图片",
    click: openImages,
    style: "width:120px"
  }));
  var nav = document.getElementsByClassName("thread-nav")[0].children[0];
  if (nav) {
    var base = nav.children[2].href;
    nav.children[3].href = base + "l" + latest_floors;

    for (i = 0; i < 1000 / contain_floores; i++) {
      var link = document.createElement("a");
      var range = String(i * contain_floores + 1) + "-" + String((i + 1) * contain_floores);
      link.href = base + range;
      link.innerHTML = range;
      link.className = "nav-btn";
      nav.appendChild(link);
    }
  }




  var hide_name = true;
  if (hide_name) {
    var names = document.querySelectorAll("span.nem, span.em");
    for (i = 0; i < names.length; i++) {
      names[i].style.display = "none";
      names[i].nextSibling.replaceData(0, 3, "");
      colon_pos = names[i].previousSibling.text.indexOf(":");
      names[i].previousSibling.replaceData(colon_pos + 1, 1, "");
    }
  }

  var comments = document.getElementsByClassName("comment");
  for (i = 0; i < comments.length; i++) {
    var id = comments[i].previousSibling.previousSibling.text;
    if (localStorage.blacklist_ids.indexOf(id) >= 0) {
      comments[i].parentNode.style.display = "none";
    }
    console.log(localStorage.blacklist_ids);


    var hide_id = document.createElement("span");
    hide_id.innerHTML = "&nbsp;(block this ID'comemnts)";
    hide_id.style.color = "#666";
    hide_id.style.cursor = "pointer";
    hide_id.onclick = function() {
      localStorage.blacklist_ids += id + " ";
      this.parentNode.style.display = "none";
    };
    comments[i].parentNode.insertBefore(hide_id, comments[i]);
  }


  var search_box = document.getElementsByClassName("top-search-box").parentNode;
  var black_list = document.createElement("li");
  var black_list_link = document.createElement("a");
  black_list_link.onclick = function() {
    this.previousSibling.style.display = "inline";
  };
  var black_list_text = document.createElement("span");
  black_list_text.innerHTML = "black list";
  black_list_link.appendChild(black_list_text);
  search_box.appendChild(black_list_link);


  // draw black list configuration board
  var black_list_configuration = document.createElement("div");
  black_list_configuration.style.textAlign = "center";
  var close = document.createElement("a");
  close.innerHTML = "&#10006;&times;";
  close.style.cssText = "float:right; padding:3px; border:1px #666 solid";
  close.onclick = function() {
    this.parentNode.style.display = "inline";
  };
  black_list_configuration.appendChild(close);

  var text = document.createElement("span");
  text.innerHTML = "IDs in the black list(seperate by space):";
  black_list_configuration.appendChild(text);
  var textarea = document.createElement("textarea");
  textarea.innerHTML = localStorage.blacklist_ids;
  textarea.id = "blacklist_ids";
  black_list_configuration.appendChild(textarea);

  var text = document.createElement("span");
  text.innerHTML = "Contents in the black list(seperate by new line):";
  black_list_configuration.appendChild(text);
  var textarea = document.createElement("textarea");
  textarea.innerHTML = localStorage.blacklist_contents;
  textarea.id = "blacklist_contents";
  black_list_configuration.appendChild(textarea);

  var close = document.createElement("a");
  close.innerHTML = "save";
  close.style.cssText = "padding:3px; border:1px #666 solid";
  close.onclick = function() {
    var input = document.getElementById("blacklist_ids");
    localStorage.blacklist_ids = input.nodeValue;
    input = document.getElementById("blacklist_contents");
    localStorage.blacklist_contents = input.nodeValue;
    this.parentNode.style.display = "none";
  };
  black_list_configuration.appendChild(close);

}

function resize() {
  var w = this.naturalWidth;
  var h = this.naturalHeight;
  var width = this.naturalWidth * percent;
  var height = this.naturalHeight * percent;

  height = height > image_max_height ? image_max_height : height;
  height = height < image_min_height ? image_min_height : height;
  width = height * w / h;


  width = width > image_max_width ? image_max_width : width;
  width = width < image_min_width ? image_min_width : width;
  height = width * h / w;

  height = height > image_max_height ? image_max_height : height;
  height = height < image_min_height ? image_min_height : height;
  width = height * w / h;

  this.width = width;
  this.height = height;
  this.style.display = "block";


  //insert popup image
  if (popup_enable) {
    var popup_img = document.createElement("img");
    width = w;
    height = h;
    var clientWidth = document.body.clientWidth;
    var clientHeight = document.body.clientHeight;


    if (height > clientHeight) {
      heigth = clientHeight;
      width = clientHeight * w / h;
    }
    if (width > clientWidth) {
      width = clientWidth;
      height = clientWidth * h / w;

      if (height > clientHeight) {
        heigth = clientHeight;
        width = clientHeight * w / h;
      }
    }
    popup_img.heigth = height;
    popup_img.width = width;

    popup_img.src = this.src;
    popup_img.style.zIndex = 2;
    popup_img.style.position = "fixed";
    popup_img.style.left = "0px";
    popup_img.style.top = "0px";
    popup_img.style.display = "none";
    //popup_img.onmouseout = function() { this.style.display = "none"};
    //var download = document.createElement("a");
    //download.setAttribute("download", "");
    //download.appendChild(popup_img);
    this.parentNode.insertBefore(popup_img, this);
    this.parentNode.heigth = height;
    this.parentNode.width = width;
  }

}



function openImages() {
  var images = "";
  for (var i = 0; i < $(".comment img").length; i++) {
    images += "<img  style='width:inherit'  src='" + $(".comment img")[i].src + "'><br>";
  }
  var images_window = window.open("", "images", "width=240, height=100");
  var message = "<div unselectable='on' style='user-select:none' selectstart='return false;'>Please press Ctrl+A.<br>Then Press Ctrl+C.<br>Because browser not allow script to copy images to clipboard. </div>";
  images_window.document.write(images);
}

jQuery.fn.disableSelection = function() {
  return this.attr('unselectable', 'on').css('user-select', 'none').on('selectstart', false);
};

//@ sourceURL=2ch.js