[TS] Generic Image Viewer

A more Powerful Image Viewer with info panel support for Pixiv, deviantArt, imgur, Seiga Nico and nijie.info. Support numpad keys now.

  1. // ==UserScript==
  2. // @name [TS] Generic Image Viewer
  3. // @namespace TimidScript
  4. // @version 2.2.47
  5. // @description A more Powerful Image Viewer with info panel support for Pixiv, deviantArt, imgur, Seiga Nico and nijie.info. Support numpad keys now.
  6. // @author TimidScript
  7. // @homepageURL https://github.com/TimidScript
  8. // @copyright © 2013+ TimidScript, Some Rights Reserved.
  9. // @license https://github.com/TimidScript/UserScripts/blob/master/license.txt
  10. // @include *
  11. // @require https://greasyfork.org/scripts/19967/code/TSL - GM_update.js
  12. // @require https://greasyfork.org/scripts/19968/code/TSLibrary - Generic.js
  13. // @homeURL https://greasyfork.org/en/scripts/18448
  14. // @grant GM_getValue
  15. // @grant GM_setValue
  16. // @grant GM_listValues
  17. // @grant GM_deleteValue
  18. // @grant GM_xmlhttpRequest
  19. // @grant GM_info
  20. // @grant GM_getMetadata
  21. // @grant GM_registerMenuCommand
  22. // @run-at document-start
  23. // @icon data:image/png;base64,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
  24. // ==/UserScript==
  25.  
  26. /* License + Copyright Notice
  27. ********************************************************************************************
  28. License can be found at: https://github.com/TimidScript/UserScripts/blob/master/license.txt
  29. Below is a copy of the license the may not be up-to-date.
  30.  
  31. Copyright © TimidScript, Some Rights Reserved.
  32.  
  33. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
  34. following conditions are met:
  35.  
  36. 1) GPL-3 License is met that does not conflict with the rest of the license (http://www.gnu.org/licenses/gpl-3.0.en.html)
  37. 2) This notice must be included
  38. 3) Due credits and link to original author's homepage (included in this notice).
  39. 4) Notify the original author of redistribution
  40. 5) Clear clarification of the License and Notice to the end user
  41. 6) Do not upload on OpenUserJS.org or any other site that infringes on this license
  42.  
  43. TimidScript's Homepages: GitHub: https://github.com/TimidScript
  44. GreasyFork: https://greasyfork.org/users/1455
  45. */
  46.  
  47. /* Information
  48. ********************************************************************************************
  49.  
  50. There are two sets of keys now. One using character keys the second using are numpad keys.
  51. Hotkeys:
  52. [A], [Num 1] => Auto-Height
  53. [S], [Num 2] => Auto-Width
  54. [Z], [Num 3] => Auto-Stretch
  55. [X], [Num .] => Enlarge/Shrink to Client Area
  56. [Q], [Num 0] => Reset Size
  57.  
  58. [D], [Num 4] => Rotate Left
  59. [W], [Num 5] => Reset rotation transformation
  60. [F], [Num 6] => Rotate Right
  61.  
  62. [X], [Num 7] => Mirror Horizontally
  63. [E], [Num 8] => Reset mirror transformation
  64. [C], [Num 9] => Mirror Vertically
  65.  
  66. [T], [Num *] => Change colour scheme (down)
  67. [R], [Num /] => Change colour scheme (up)
  68.  
  69. TODO: Replace the video controls
  70. ------------------------------------
  71. Version History
  72. ------------------------------------
  73. 2.2.47 (2017-04-11)
  74. - Bugfix for Chrome support
  75. 2.2.46 Beta (2016-11-22)
  76. - BugFix: imgur link fix
  77. - Better support for videos
  78. - Support for video sites (gfycat)
  79. - Support for twitter :orig url
  80. 2.2.45 (2016-10-13)
  81. - Bugfix: Video loop
  82. 2.2.44 (2016-09-21)
  83. - Changed the hotkeys
  84. 2.2.43 (2016-09-13)
  85. - Separated hotkey for reset rotation and mirror image.
  86. - Revised hotkeys and added numpad keys
  87. 2.2.42 (2016-09-03)
  88. - Bugfix: "z-index" added to panels
  89. - Bugfix: Video panel no longer shows on sites like steam
  90. - Removed no longer needed nicoseiga image checking
  91. - Removed the article container and just kept the image in the default body parent node
  92. - Added my own center algorithm that handles the rotation aspect.
  93. 2.2.41 (2016-07-26)
  94. - Moved SWF controls to the bottom
  95. 2.2.40 (2016-05-27)
  96. - Altered license
  97. 2.2.39 (2016-25-25)
  98. - Moving to GreasyFork and preparing the removal of files from OUJS
  99. 2.2.38 (2016-04-10)
  100. - updateURL added
  101. 2.2.37 (2016-04-03)
  102. - Changed license to GPL-3
  103. 2.2.36 (2016-03-28)
  104. - Updated URL for Google Reverse Image Search
  105. 2.2.35 (2016-02-26)
  106. - Support for TamperMonkey window object separation
  107. 2.2.34 (2015-12-27)
  108. - Bugfix: Original title of image kept
  109. - Bugfix: getScrollBarThickness is called after the document has finished loading (interactive or complete).
  110. - Bugfix: Resizing and centring of image corrected
  111. - Better support for Pixiv images
  112. - Bugfix: SWF Support
  113. - Added support for mp4, flv abnd webm
  114. - Added loop button for videos
  115. 2.2.33 (2015-10-05)
  116. - Replaced base64 bmp icon with png version
  117. 2.2.32 (2015-09-23)
  118. - Changed the hotkeys
  119. - Removed colour scheme preview
  120. - Links only appear when you hover link panel
  121. 2.2.31 (2015-07-31) Major release due to major changes in inner workings and addition of CSS
  122. styler.
  123. - Bugfix: "Unknown" is used for missing DeviantArt artist's name
  124. - Does not wait for the image to load. It attempts to alter page at interactive stage
  125. - Corrected a few typos
  126. - Improved all regular expressions for extracting information from url. Using match instead of replace
  127. - Improved the way it extracts user id from nijie.info
  128. - Support for DeviantArt https
  129. - Improved auto-hide visibility of meta panel
  130. - Improved extraction of metadata, such in deviantArt underscore (_) is representation of hyphen (-)
  131. - Added preview of all youtube thumbnails
  132. - Changed content to use CSS styles
  133. - CSS preview over hover
  134. - Changed hotkeys
  135. - Links href is only added when control bar is visible. (Remove tag suffix)
  136. 1.2.30 (2015-06-27)
  137. - URI (Base64) Script icon
  138. 1.2.29 (2015-06-20)
  139. - Removed the comment for URL alteration
  140. 1.2.28 (2015-06-19)
  141. - Removed cloneInto as it's no longer needed
  142. - In flash controls are always visible
  143. - Bugfix: where controls are missing for deviantart images/swf that do not have id
  144. - Remove postfix "?timidscript_*" from image source and url. The tag is used in a personal script that has been in beta phase since forever.
  145. - Source links now have the prefix "timidscript_source" to avoid being picked up by downloaders
  146. - Using styles to toggle visibility
  147. - Removed the message box.
  148. 1.2.27 (2015-05-14)
  149. - As of 11/05/2015 the Phone API (SPAPI) is dead. Using TSL-Pixiv library to get information from HTML.
  150. - Avoided the usage of Public API to bypass multiple login and timeout
  151. - Changed the hotkeys to match Pixiv Manga Viewer
  152. .
  153. .
  154. .
  155. 1.0.1 (2013-10-06)
  156. - Initial Release with Pixiv Support Only
  157. **********************************************************************************************/
  158. //if (window !== window.top) return;
  159.  
  160. function makeStruct(names)
  161. {
  162. var names = names.split(' ');
  163. var count = names.length;
  164. function constructor()
  165. {
  166. for (var i = 0; i < count; i++)
  167. {
  168. this[names[i]] = null;
  169. }
  170. }
  171. return constructor;
  172. }
  173.  
  174. /*
  175. ==============================================================================================
  176. VYCC: Variables You Can Change
  177. ==============================================================================================*/
  178. //GM_setValue("BGColors", '["#252525", "#EDE9E9", "#E7FDF7", "#F1E8D2"]') //Image Background Colours
  179.  
  180.  
  181. var ResizeMode = GM_getValue("ResizeMode", 0); //Bit operator for fitting and expanding images. (1 = FV, 2 = FH, 4 = Expand)
  182. var ScrollBarThickness;
  183. var DELAY = 1500;
  184. //var DELAY = 500000000;
  185.  
  186. function Styler()
  187. {
  188. document.stopCapture = true;
  189. var styler = document.createElement("div");
  190. styler.id = "GIVStyler"
  191.  
  192. var tb = document.createElement("textarea");
  193. tb.setAttribute("style", "resize:none;width:100%;");
  194. //tb.setAttribute("wrap", "off");
  195. styler.appendChild(tb);
  196.  
  197. tb.value = decodeURI(GM_getValue("CSS"));
  198. tb.onkeydown = function (e)
  199. {
  200. var k = e.which || e.keyCode;
  201. if (k != 9) return;
  202. e.preventDefault();
  203. var start = this.selectionStart,
  204. end = this.selectionEnd;
  205.  
  206. this.value = this.value.substring(0, start) + " " + this.value.substring(end);
  207. this.selectionEnd = this.selectionStart = start + 4;
  208. }
  209.  
  210. tb.onkeypress = function (e)
  211. {
  212. clearInterval(tb.timeout);
  213. tb.timeout = setTimeout(function () { TSL.addStyle("GIViewerCSS", tb.value); }, 1000);
  214. }
  215.  
  216. var con = document.createElement("section");
  217. con.setAttribute("style", "");
  218. styler.appendChild(con);
  219.  
  220. var el = document.createElement("button");
  221. el.textContent = "Apply";
  222. el.style.width = "80px";
  223. el.onclick = function (e)
  224. {
  225. TSL.addStyle("GIViewerCSS", tb.value);
  226. var css = encodeURI(tb.value);
  227. GM_setValue("CSS", css);
  228. console.log(css);
  229. }
  230. con.appendChild(el);
  231.  
  232.  
  233. el = document.createElement("button");
  234. el.textContent = "Exit";
  235. el.style.width = "80px";
  236. el.onclick = function (e)
  237. {
  238. TSL.addStyle("GIViewerCSS", decodeURI(GM_getValue("CSS")));
  239. TSL.removeNode(styler);
  240. document.stopCapture = false;
  241. }
  242. con.appendChild(el);
  243. document.body.appendChild(styler);
  244.  
  245. window.addEventListener("resize", function ()
  246. {
  247. tb.style.height = (styler.clientHeight - con.clientHeight) + "px";
  248. });
  249.  
  250. tb.style.height = (styler.clientHeight - con.clientHeight) + "px";
  251. }
  252.  
  253. function CreatePanelMeta(text, href)
  254. {
  255. var panel = document.createElement("span");
  256. panel.className = "metaPanel";
  257. var link = document.createElement("a");
  258.  
  259. if (text) link.textContent = text;
  260. if (href)
  261. {
  262. link.href = href;
  263. link.setAttribute("data-href", href);
  264. }
  265.  
  266. panel.appendChild(link);
  267. return panel;
  268. }
  269.  
  270. function CreatePanelImage(href, imgSrc, title)
  271. {
  272. var panel = CreatePanelMeta(null, href);
  273. var image = document.createElement("img");
  274. image.src = imgSrc;
  275. panel.firstElementChild.appendChild(image);
  276. if (title) panel.title = title;
  277. return panel;
  278. }
  279.  
  280. function CreatePanelControlIcon(text, classname, href)
  281. {
  282. var panel = CreatePanelMeta(null, href);
  283. //panel.firstElementChild.setAttribute("src", href);
  284. panel.firstElementChild.href = href;
  285. var div = document.createElement("div");
  286. div.className = classname;
  287. panel.firstElementChild.appendChild(div);
  288. panel.firstElementChild.title = text;
  289. return panel;
  290. }
  291.  
  292. var ControlHQ =
  293. {
  294. data: new (makeStruct("imgTitle imgURL userIcon userHome userName userGallery"))(),
  295. flash: false,
  296. video: false,
  297.  
  298. addStyles: function ()
  299. {
  300. ControlHQ.flash
  301.  
  302. document.body.className = "CSS" + GM_getValue("CSS-Selection", 1);
  303.  
  304. TSL.addStyle("CSS-Body", 'body {padding:0;margin:0;}');
  305. TSL.addStyle("CSS-MainImage", '#imageBox {vertical-align: middle; text-align:center; display:table-cell;} #theImage {top:0;bottom:0;margin:0}');
  306.  
  307. TSL.addStyle("CSS-PanelHover", "#LinkPanel:hover, #ControlPanel:hover, #YoutubeThumbs:hover {visibility: visible !important;}");
  308.  
  309. TSL.addStyle("CSS-LinkPaneM", '#LinkPanel a {color:red; font-size:14px; font-weight:700;font-family:font-family: "Times New Roman", Times, serif;}');
  310.  
  311. TSL.addStyle("CSS-LinkPanel", '#LinkPanel {position: fixed; z-index: 100; left: 10px; top: 10px; z-index:100; border: 2px ridge white; padding: 2px 5px; background-image:linear-gradient(to bottom,#818180 0%,#F3F3F5 50%, #818180 100% ); box-shadow: 0 0 2px 3px black;}'
  312. + '.metaPanel {text-align: center;vertical-align: middle;display: table-cell;margin: 0;padding: 0;}'
  313. + '#LinkPanel img {height:24px;width:24px;border: 1px solid white; padding: 1px; background-color:black; margin-right: 5px;} .metaPanel + #UserHome {padding-left: 10px;} .metaPanel + [title=IQDB] {padding-left: 20px;}'
  314. );
  315.  
  316.  
  317. TSL.addStyle("YoutubeStyler", " #YoutubeThumbs {position:fixed;right:10px;top:10px;max-width:120px;padding: 1px;background-color:white; border:1px ridge black;}");
  318.  
  319. TSL.addStyle("CSS-ControlPanel", "#ControlPanel {position:fixed; z-index: 100; top: 60px; left: 10px; display:inline-block; background-image:linear-gradient(to right,#818180 0%,#F3F3F5 50%, #818180 100% ); padding: 2px; border: 2px ridge white; box-shadow: 0 0 2px 3px black;}"
  320. + '#ControlPanel div {display:inline-block; margin:1px;} #ControlPanel {width: 80px; text-align:center;}'
  321. + ".resizeBTN, .transformBTN {height:32px;width: 32px; background-color: #F9FAFA; border: 2px ridge #05F505; border-radius: 5px; background-position: center center; background-repeat: no-repeat; cursor:pointer;}"
  322. + ".resizeBTN + .transformBTN, .transformBTN + .cssBTN {margin-top: 8px;}"
  323. + ".resizeBTN:hover, .cssBTN:hover, .transformBTN:hover {border-color:red;}"
  324. + ".cssBTN {width: 70px;height:40px;border: 2px solid #05F505; border-radius: 5px; cursor:pointer;background-color: white; padding:0!important; position:relative;}"
  325. + '.cssPRE {width:40px;height:20px;background-color:white; margin: 0 !important; position: absolute;left:15px;top:10px;font-family: "Courier New", Courier, monospace;font-size: 20px;font-weight: 500; color:gray}'
  326. );
  327.  
  328. //INFO: Use encodeURI rather than JSON as JSON seems causes an unknown error when I try and paste it in
  329. var css = GM_getValue("CSS", null)
  330. if (!css)
  331. {
  332. css = '/*%0ACSS#%20is%20a%20class%20that%20is%20applied%20to%20the%20body.%20The%20hash%20is%20replaced%20by%20the%20button%20number%20from%20the%20style%20selection%20(1-6).%0A*/%0A%0A/*%20CSS1%20*******************************************/%0A.CSS1,%20#cssBTN1%0A%7B%0A%20%20%20%20background-color:black;%0A%7D%20%0A%0A.CSS1%20#theImage%0A%7B%0A%20%20%20box-shadow:%200%200%203px%206px%20white;%0A%7D%0A%0A#cssPRE1%0A%7B%0A%20%20%20box-shadow:%200%200%201px%203px%20white%7D%0A%0A%0A/*%20CSS2%20*******************************************/%0A.CSS2,%20#cssBTN2%0A%7B%0A%20%20%20%20background-color:white;%0A%7D%20%0A%0A.CSS2%20#theImage%0A%7B%0A%20%20%20box-shadow:%200%200%203px%206px%20black;%0A%7D%0A%0A#cssPRE2%0A%7B%0A%20%20%20box-shadow:%200%200%201.5px%203px%20black;%0A%7D%0A%0A/*%20CSS3%20*******************************************/%0A.CSS3,%20#cssBTN3%0A%7B%0A%20%20%20%20background-color:#E0E0E0;%0A%7D%20%0A%0A.CSS3%20#theImage%0A%7B%0A%20%20%20box-shadow:%200%200%203px%206px%20black;%0A%7D%0A%0A#cssPRE3%0A%7B%0A%20%20%20box-shadow:%200%200%201px%203px%20black;%0A%7D%0A%0A/*%20CSS4%20*******************************************/%0A.CSS4,%20#cssBTN4%0A%7B%0A%20%20%20%20background-color:lightblue;%0A%7D%20%0A%0A.CSS4%20#theImage%0A%7B%0A%20%20%20box-shadow:%200%200%203px%206px%20blue;%0A%7D%0A%0A#cssPRE4%0A%7B%0A%20%20%20box-shadow:%200%200%201px%203px%20blue;%0A%7D%0A%0A%0A/*%20CSS5%20*******************************************/%0A.CSS5,%20#cssBTN5%0A%7B%0A%20%20%20%20background-color:orange;%0A%7D%20%0A%0A.CSS5%20#theImage%0A%7B%0A%20%20%20box-shadow:%200%200%203px%206px%20black;%0A%7D%0A%0A#cssPRE5%0A%7B%0A%20%20%20box-shadow:%200%200%201px%203px%20black;%0A%7D%0A%0A%0A/*%20CSS6%20*******************************************/%0A.CSS6,%20#cssBTN6%0A%7B%0A%20%20%20%20background-color:yellow;%0A%7D%20%0A%0A.CSS6%20#theImage%0A%7B%0A%20%20%20box-shadow:%200%200%203px%206px%20black;%0A%7D%0A%0A#cssPRE6%0A%7B%0A%20%20%20box-shadow:%200%200%201px%203px%20black;%0A%7D%0A%0A/*%20CSS7%20*******************************************/%0A.CSS7,%20#cssBTN7%0A%7B%0A%20%20%20%20background-color:black;%0A%7D%20%0A%0A/*%20CSS8%20*******************************************/%0A.CSS8,%20#cssBTN8%0A%7B%0A%20%20%20%20background-color:darkgray;%0A%7D%0A%0A/*%20CSS9%20*******************************************/%0A.CSS9,%20#cssBTN9%0A%7B%0A%20%20%20%20background-color:lightblue;%0A%7D%0A%0A/*%20PREVIEW%20BUTTONS%20**********************************/%0A.CSS1%20#cssBTN1,%20.CSS2%20#cssBTN2,.CSS3%20#cssBTN3,%20.CSS4%20#cssBTN4,%20.CSS5%20#cssBTN5,%20.CSS6%20#cssBTN6,%20.CSS7%20#cssBTN7,%20.CSS8%20#cssBTN8,%20.CSS9%20#cssBTN9%0A%7B%0A%20%20%20%20border-color:%20red!important;%0A%20%20%20%20box-shadow:%200%200%201px%204px%20yellow;%0A%7D%0A%0A.CSS1%20#cssPRE1,%20.CSS2%20#cssPRE2,.CSS3%20#cssPRE3,%20.CSS4%20#cssPRE4,%20.CSS5%20#cssPRE5,%20.CSS6%20#cssPRE6,%20.CSS7%20#cssPRE7,%20.CSS8%20#cssPRE8,%20.CSS9%20#cssPRE9%20%20%0A%7B%0A%20%20%20%20color:black;%0A%20%20%20%20font-weight:%20900;%0A%7D%0A%0A.cssPRE%0A%7B%0A%20%20%20%20%20background-image:%20linear-gradient%20(orange,yellow,white,yellow,orange);%0A%7D%0A%0A/*%20THIS%20WINDOW%20**********************************/%0A#GIVStyler%0A%7B%0A%20%20%20%20position:fixed;%20%0A%20%20%20%20width:40%25;%20%0A%20%20%20%20height:80%25;%0A%20%20%20%20right:10px;%0A%20%20%20%20top:10%25;%0A%20%20%20%20background-color:%20black;%0A%20%20%20%20border:2px%20ridge%20white;%0A%20%20%20%20box-shadow:%200%200%202px%204px%20black;%0A%7D%0A%0A#GIVStyler%20%3E%20textarea%0A%7B%0A%20%20%20%20background-color:#FFFFFA;%0A%7D%0A%0A#GIVStyler%20%3E%20section%0A%7B%0A%20%20%20%20padding:%203px%205px;%20text-align:right;%0A%7D';
  333. GM_setValue("CSS", css);
  334. }
  335. TSL.addStyle("GIViewerCSS", decodeURI(css));
  336.  
  337. if (ControlHQ.flash || ControlHQ.video)
  338. {
  339. TSL.addStyle("CSS-LinkPanelFV", "#LinkPanel {position:static; display:block; height:28px;}");
  340. }
  341. },
  342.  
  343. displayImage: function ()
  344. {
  345. for (var i = document.head.children.length - 1; i >= 0; i--)
  346. {
  347. var child = document.head.children[i];
  348. if (child.tagName != "TITLE") document.head.removeChild(child);
  349. }
  350.  
  351. for (var i = document.body.children.length - 1; i >= 0; i--)
  352. {
  353. var child = document.body.children[i];
  354. //document.body.removeChild(child);
  355. //if (child.id != "USOUpdaterMenu") document.body.removeChild(child);
  356. if (child.tagName != "IMG") document.body.removeChild(child);
  357. }
  358.  
  359. /* Add Image
  360. ********************/
  361. var img = document.querySelector("img");
  362. img.id = "theImage";
  363.  
  364. ControlHQ.data.imgSrc = img.src;
  365. img.onload = ControlHQ.readjustImageSize;
  366. setTimeout(ControlHQ.readjustImageSize, 500);
  367.  
  368. var a = document.createElement("a");
  369. a.href = img.src.replace(/(\?\d+$|\?[^\\\.\/]+$)/, "");
  370. a.href = a.href.replace(/\?\d+$/, "");
  371. a.title = "***IMAGE***";
  372. document.body.appendChild(a);
  373.  
  374. ControlHQ.createControlPanel();
  375. ControlHQ.readjustImageSize();
  376.  
  377. window.addEventListener("keydown", ControlHQ.keyDownCallback, true);
  378. window.onresize = ControlHQ.readjustImageSize;
  379.  
  380. /* Set favourite icon
  381. **********************/
  382. var link = document.createElement('link');
  383. link.type = 'image/x-icon';
  384. link.rel = 'shortcut icon';
  385. link.href = img.src;
  386. document.head.appendChild(link);
  387. },
  388.  
  389. createLinkPanel: function ()
  390. {
  391. console.log("createLinkPanel");
  392. //if (document.location.protocol.match("file:")) return;
  393. TSL.removeNode("LinkPanel");
  394.  
  395. var img = document.getElementById("theImage");
  396. if (img) ControlHQ.data.imgTitle += " (" + img.naturalWidth + "×" + img.naturalHeight + ")";
  397.  
  398. var panel,
  399. linkPanel = document.createElement("div");
  400.  
  401. linkPanel.id = "LinkPanel";
  402. document.body.insertBefore(linkPanel, document.body.firstElementChild);
  403.  
  404. var data = ControlHQ.data;
  405. if (data.imgURL)
  406. {
  407. panel = CreatePanelMeta(data.imgTitle, data.imgURL);
  408. panel.title = "Illustration Page";
  409. linkPanel.appendChild(panel);
  410. }
  411. if (data.userHome)
  412. {
  413. if (!data.userIcon) data.userIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABW0lEQVR42mNkwAECAoNZGBkYVgKZCv8ZGFw2rF/7Hps6RmyCvn7+TIwMjIuAstFggf8MJ/4z/HfZvGnjV6IM8Pb2nQakMtGE9wBN8tm6dctPvAZ4eHh1AAXLsRkM9Mo6IBm+Y8f2P1gNcHN1rwBS7Qz4wYL///8n796z6x+KAc5OzkAnM05jIAr8n7h3394CuAEO9g7AwGJcjCtMcBjScODggUZGWxtbb6C+DUARFuI1ww3JZrSxslEEsuSB/nIH0hVE6lzAyMi4EEi/gTvZwsw8AUjNJ9KAxhOnTjagBKKpsQlJBpw+ewbVACMDQxQDGEHhwshwEeJVoBcZ/icgG3DuwnlUAwx09dBdkHjh8qUFUDkHILUf2QCgHKoBulraGAZcvnZ1AVQOwwCgHKoBWuoaGAZcu3ljAVQOwwCgHKoB6iqqIEW7gJgVZsDNO7cXIMnBDPgPlQNFIwMAOj56D6356V8AAAAASUVORK5CYII";
  414. panel = CreatePanelImage(data.userHome, data.userIcon, "User Homepage");
  415. panel.id = "UserHome";
  416.  
  417. var image = panel.getElementsByTagName("IMG")[0];
  418. linkPanel.appendChild(panel);
  419. }
  420.  
  421. if (data.userGallery)
  422. {
  423. panel = CreatePanelMeta(data.userName, data.userGallery);
  424. panel.title = "User Gallery";
  425. linkPanel.appendChild(panel);
  426. }
  427.  
  428. if (ControlHQ.flash)
  429. {
  430. document.body.appendChild(linkPanel);
  431. //TSL.addStyle("","#LinkPanel {position:fixed;top:0;left:0;width:100%;z-index:100;}");
  432.  
  433. var flash = document.getElementsByTagName("Embed")[0];
  434. panel = CreatePanelMeta("[SWF]", flash.src);
  435. panel.firstElementChild.style.marginLeft = "10px";
  436. linkPanel.appendChild(panel);
  437. }
  438. else if (ControlHQ.video)
  439. {
  440. var video = document.getElementsByTagName("video")[0];
  441. video.loop = true;
  442.  
  443. panel = CreatePanelMeta("[VIDEO]", video.baseURI);
  444. panel.firstElementChild.style.marginLeft = "10px";
  445. linkPanel.appendChild(panel);
  446.  
  447.  
  448. var loopOff = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQpSURBVFhHrVZLa1NREBaS1OZ50xgbG6MhIsHYRavupAuxO3XhQt21gq+NLxBpXYi/QXxsxYW4rKDiRlHwhYIL3al/Rr9vMnM6994kNsXFx5zvzDNz5pybLVFUySoyipzjlIO42ZKbjhjb1wqwzbEDOL4p3y3lcilDgOQgs8opB3GzJTcdIcl0bbZJbraS3Dg7IMm5qWuptjDTPlxo7b1RaHZuCXZ3V8BXZU1Jrro8OOH4iuOXS9PNPS625RHOAmLJK1E0OdnuPcrv6j5DovPFmfZyYUd7Od/sLCHYEvhZyGXollDksuhVRy5wHH7XJjuzXyDPuTyhGD8DlLl8u3clv7t7N4oi4aoLDo6nujaAi20pioqI+6443dzv9GJrRxACwPBjud6YUS4BuK8wvuHkyrPoyAn8sDvGVScFmINsom3HcAz/NTnXxe3NORTwwLgil5oB5akAik0lJ4r1xgEM5kPjgPgmZiDKoVWLkKkAwKaTc42bMI8C2AHy4BubAZz/Cib2Dyb8phkohiYvTdUi3JKTqjO99xUuR9Du3cc6FivMAJQXgdfAL5zVE1ybC2o0NHmxVm+i4Ofweev0ZhvjuAHzeDv8DFD2ZwB3/jSCfChP1ap4A35A5iFfYiBPJR2Mo6U9JH9VbLT2wfeN7pttLDlRis8A9yWWHAEek6PlbfU6NxDsB/fY2lKjdYRr7gOuExHt7iFoA8VOoNjX67pg73kOHZhzHQix7FsgDlyzAMiR3wUG0HUGBWzVDvR5385sCfG1GSC3XNy3GZBqCO2AcUk2gNsvy1ZcAeQK0wdfvQU8glgsKyA45DuzcgS6PzI5wSNAAXYEZkvEfPEOWAHmK7FkBhTi4Drwz+RcJwqIxdK1+CZewhDLZkAcuGYB5Dwf1VGunzm42RL+CHRv3TeKJnDDHpdq9boUsKsr7wDsb+P2HKKdXEMGZABK14FQva6Nm064H0Ig9cvxsp7BdX2PG7XAI4DtdeApvjdbaeNnQBz4Dniua+NmG7i7hqnkxvGoXYLNTxTyG8lfoGsF09kMBAfXgX8m76+jLFq8c52LTBWDX7+K2O+RHD8+6NKfYy1gg8kFqWQDONYR56XodOKbmgF3BMIVw/gGkwduOkJsB83Ad0yvBfIOST5WcrwDPQzkdeXBNjkDPII1XJGDuhcCJPhYyQm8AVeBS6oLtn4GxAHJF1DEZ3xomronAUwPjJ+8tXcRnf2KG4NRiNvaDMQc8AfjOK7MNxTyBY4fIYlPIjuzMa56rvt6x1X3HXIN/x3aGj8kp7QjCMk9R8UVfJarpWqtigmugU+RQxqvKp8CarRzXGzxlzyPWEO75mcgljzBhwZw3GzJTUeM9OW3gO+2bMj7rVzX8be9LyWA51yrP7npBvpSOtvU55hrz0dWr9xsyU1HbMC3kvkLi1InuVxQBOEAAAAASUVORK5CYII=",
  449. loopOn = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQxSURBVFhHtVZbb1VVEJ6EAooJojEx4IOJT+gLqG+GhHJLSOtDNb1YbsYbJFKUQK0EEE000cSkIWqjIqmSAoVgi4EGiSUtF8HCOcKBlrYKyE8Zv1l75uw56+ye9FRp8p0138x8a1bXmrX3JuLlNYpZitmOy5jFLVe4xQTVa9UwZ/UTpHxmWuec2QQJZq5VIxLUgh94ifj0DuJju4j7gOEO4l8+JO6FfQrjEPjPsIX/Cj4IHIctGETsDLhoj28l3v1MOrcrLjZ+ouJ1DxFPdBNfOUk88Bbx95uIu4H+jcRHgG9fJ+4BPwn7R4zfAb2w+4CDsH8ATsAWHIDd/x7xvREs9k1XJ12Mc8qIxVxtI76wn3iF8kiQ8mjhmVxzGx7BvMPEHz/n4kmuc+gEud+Jty1UrhM4QYIqigcO9LyMf2xfyjWuxE1wqI549f9cXOxPlxCf/yblAbMzemCqCVRQnhtzyxVuMaDjeTRmV8pVG36KghVw9qzCqNxP8F+Ki/3RUuLfZAeEp1p1gMjVu4Hrc59xzdqLCbEgGR3f8ChuSYPGLO61yj/DEVz7GnbpXErg/PMdYJD41l/EFw/j+rytSRWKty0i/ucUGnfIxS034vuwA+d8D8hoPTDSRHz9EnHLAjwDbhI3PUw8NoCGbCwTFPmeZ1H8DPGXi4kL59Rfw/hL4glXG2j3PZDOlTi6VhK/8UQSGMUCxLcOW/t5bWI7QeArMea+It75JHHrHOJx7JzFivmeQ/sJjmDIdiCdK/yUCAqyAFcsEqRcbKB5LnFedkB5iFuuQLWVe8AJbskC0oSKxYU3YgE5W4DELVfgtLvRA2flCCwuY+iBSDCpR6AJsSDNFQ7IEYzaEViuINJ+gAWU9UDxCJzgpu3ANIqLLQsYi3sgQytPwku+B5JcNZxgyh5IBAm3GFByBAKnrcPiLv9EvAUNLgv4Az0gz5v8XuLOF0NeqUDGcAscr1Rc7Ca/gGgu4b3NxHcuEn+xLDmC3Pt44B0lXgsdcsoF8hzwPNjGLdfx4jXMKG68bzPx7Uk8Zf9G8dPEr8wrxpIELwhHYDwqlsXXYHz3qZSHMWMxZ/GFVMBONM53sbCASBCacJrFAzKKlXHY8oJ7FR8mkTb8lAhu2xEoLxHEfJrFi9xigiTXOVUwXiCut4m8IOZZxWJuueC78O44jAaMtOpwgnw/OvYF9bkJSniVxQUXtgFoxihXiRN04rpcu0K8Ha9aP4HFqy1eCwzgI2f8KnELXnBRbvgpEQgO1hPfzeMVjc/pcXykFoDcZXwvYJwEZBQu/gkgD1v4KOwxjQlEO4ojHcOubn1a50+Ly6gOV9y4rLwZV2Y9vhEEjY8Tv/YYvoBgtyqXUXgL/E3gltssHBC7Ad8WmbuUcOe0hCw+9QQpt1zhFhNU1irxgpg/uOLCncOcnj/Y4rx81r/EYrM5l2tVVAAAAABJRU5ErkJggg==";
  450.  
  451. panel = CreatePanelImage("", loopOn, "Video Repeat");
  452. panel.firstElementChild.setAttribute("style", "cursor:pointer; margin-left:30px;");
  453. linkPanel.appendChild(panel);
  454.  
  455. linkPanel.querySelector("img").style.backgroundColor = "gray";
  456. panel.firstElementChild.onclick = function ()
  457. {
  458. if (video.loop == true)
  459. {
  460. video.loop = false;
  461. linkPanel.querySelector("img").src = loopOff;
  462. }
  463. else
  464. {
  465. video.loop = true;
  466. linkPanel.querySelector("img").src = loopOn;
  467. video.play();
  468. }
  469. }
  470. }
  471. else //Image
  472. {
  473. panel = CreatePanelImage("https://www.iqdb.org/?url=" + data.imgSrc + "&"
  474. , "data:image/x-icon;base64,AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1PEb/t8nc/8vi/v+cwPv/XXKU/z5off9nyv7/P6H5/ylPcf82gr3/VLv7/ypjl/8PDxH/Ro2u/2XN//+15/7/UoOa/yAoOf8rYY3/JnvH/yqN4/8bSnT/HCY2/y82Uv8xNVH/Ki5G/yMoPf8gJjn/GyQ1/x4qPv8SGiX/FBwo/xUcKP8yRmf/MUNg/xceKv8hKDr/WnOc/52+7f+20/z/yeH9/83k/v/P5f7/z+X+/8/l/v/N5P7/yuL+/8ri/v81PEf/wNXt/6LF/P9yjbn/KzM8/zNDUv9qzv3/QKL4/y5hkP88gbD/Rav5/x5GaP8cM0H/Ysr9/4LW/v9YlrP/JC0+/zJbfv8znff/K5Hs/x9DaP8dIzP/HSQ1/xYeKv8WIC3/FyIw/xciMP8XIjD/FyIw/xciMP8XIjD/FyIw/xciMP8XIjD/FyIw/xciMf8VHyz/GiQz/0RUbf99lLX/r8z0/8Pd/f/M4/7/zeT+/87k/v/L4v7/yuL+/8ri/v89RlP/osT7/3mXxv83QlL/OkJU/ywyPv9es9r/TbD6/zByrP9GmM3/OJ73/xcvQv9Elcf/Zs3+/1ylx/8mMUP/KmGY/1G69v8ka6v/FCk+/xQdKf8XIjD/FyIw/xciMP8XIjD/GiU0/yEqPv8nL0f/KzJM/y41UP8uNE7/JytC/yQpPv8gJTj/OUt2/0lglP9Va5b/YXWU/2JziP9WZXf/S1Zj/298iv+uw9r/yuL+/8ri/v/K4v7/yuL+/8jg/v9RYnv/eZXC/zlDUv9ETWT/MjhG/09Wdv9VkbL/YMX9/zOBxv83lOX/OJz1/zRlff9Mtfr/WbXh/yxBW/8te8L/KGme/x8zQv8ZJDH/GSQy/xgjMf8YIzH/GyU2/ycvRv8zOVb/OT5f/zg9Xv8yOFX/Ki9H/yIpPP8eJTf/HSU3/xwkNf8YIC//HSo//yk9Xv87Vor/U3nA/3Ce9f+Ntvr/tNL8/8bf/v+80u3/x9/6/8ri/v/K4v7/yeH+/8fe/v9VZoH/O0VV/11miv9HUmv/dYC1/2Rvm/8/XnX/aM7+/z+V1/81kOD/N4jL/1a37/9AoOn/Klp//yRfk/8cMkf/HCc0/xwlM/8aJTL/GiY0/yUuQv8xOFP/Oj9f/zk+X/85Pl//OT5f/zk+X/85Pl//OT5f/zg9Xv81OVj/MDRP/y4yTP8uMk3/LzNN/y4zTf8pMEf/Iio+/x0pPf9GXof/hKjk/7rX/f/H4P7/yuL+/8ri/v/K4v7/yeH+/8bd/f87RVP/Y2yT/0NKX/9gZo3/Sk5q/z5KYf82Rlj/YsHs/1Gs5P8yg8v/UKLO/0er9P8jVHv/HzhP/x8qNv8eKTb/HCc1/x8oN/8rMkn/OD5d/ztAYf87QF//LzNM/zc7Wv8xOVf/QlOA/01lmP9YdKv/bImz/2WGs/9rlNP/lbXh/x4qPf8WIC3/Ehsm/xEZI/8QFh//ICxE/y5AZP85UHz/KTdT/0ldg/+kwu7/0eX+/8ri/v/J4f7/yOD+/8bd/f9YYoL/R01k/01Rbf83O0r/MTtJ/zI9TP81QlT/Soek/1ew3/8pW4P/XLjj/yVHZP8iKjf/IS05/x8rN/8gKzn/LzdO/zxBX/89QmH/PEFh/y4yS/8QERj/DQ4U/ygvRf8fJzj/KjpW/01qm/96pOz/k7v7/5W79P9zoOD/r871/zZIZf8WIS7/Hyk8/ycuRP8nLUT/LTJN/ykuR/8uN1X/WHm7/26X5f9ojdD/i6zZ/9Lg8//R5f7/yOD+/8bd/f9ITGL/SU1l/zM6Rv82Pk3/O0NV/zdBU/9FT2r/S2KB/0uayP8qXYr/JzRB/yUuO/8kLTv/Ii06/y43S/89QmD/PkNi/z5DYf82PVj/Gh4q/wUFBf8EBAT/BQUG/1Rrl/9Ubp7/TWKN/zpKa/8jLUD/UmyY/4Ot9f+FsPn/k7r7/09pk/8oNkz/N0pr/0BZhP9ii9b/b573/2yZ8f9giNP/TWmj/16Cxv95pPj/gKr5/4ut4P/P2+r/3er+/8jf/v9LT2f/NTxI/0NJXv9ESmH/P0Va/2hwnf9haJL/NDtM/zFJWv8pNUP/KTRD/yYvPP8pMUH/PEJe/0JHZ/8/RGT/LzNJ/yUuQP8rOE//BwcH/wYFBf9HOTL/uZyN/9rT1f+nw/D/jbPy/8nS4/+mw/b/co/F/1pxnP94nuL/hK75/4Ww+f95oOH/bZHO/3uo8f97qvn/eKf5/3al+P97p/j/ibD5/5m6+v+nw/v/sMn8/7rS/P+wye3/nLfT/6/F3f89RFT/TlNu/01RbP9MUWz/T1Nx/09VdP8wN0X/LztL/zE+T/8xQFL/MUBU/zU9U/9XXon/TFJ3/zI2TP8jKjj/ISw5/y42TP8UFh7/BwcH/z86Of82Nj3/ESpB/wZRe/8TQFz/XWyC/83W7v+euez/gKj4/3+n+P95oOz/gar4/4Sv+f+Hsvr/h7P6/2yOxv9xltL/krr7/6HE+/+pyPz/ocD6/7HK+/+1zPv/pb/x/5m36v+IrOb/f6jo/4Ww8/9TV3P/U1d0/1FVcv9QVHH/S1Br/y41Qf8uOEX/Okpg/zdIXf8/Um3/WGON/3B5sf9HTG3/KzBC/yAoNf8sMkb/Pkts/0BScv8ODxL/DA0Q/9/g4f8mM0P/BzVX/xSLw/9Mwe7/JFBr/8zX5/+zy/n/rcX7/6rD+/+ow/v/qMT7/6jH+/+myPv/l777/4ez+v96oeH/Z4e8/4Ww+f+Crfj/f6j4/67J+/+2zfv/ts37/7fO/P+zzfz/sc78/6XH/P9VWXX/U1d0/1JWc/9OUm7/MTdE/y01Qf88TWP/NkRX/zRCVP9JUnL/aHCj/0JHZP8lLDj/LTRG/ycrO/8jLT3/JCw7/yoyRf8JCQn/CQwS/wkNGP8jJzH/BwsW/wcMGP86s9H/C1yG/6u+3P/C1fv/v9D7/77O+/+7zfv/uc78/8DW/P/H3/7/yuL+/7nW/f+Yv/v/gqvt/1Zxnf+Drfb/hq74/7rQ/P+3zvz/t878/7nP/P+90/z/wtn9/8Da/f9VWXb/VFh0/1FWcv82PUv/LzhD/zM+Tf8yPU3/MDhH/0NKZP9SV3v/SVJz/yUvPP8qMD//Iyk0/ycvPf8vNUn/RVFx/2V5l/8LCwv/Cg4W/wkOGP8IDRf/CAwX/wcLFv8sj6//GH6s/5mpxf/E1fv/vs77/7zM+/+9zfv/vM78/7/U/f/H3v7/yuL+/8ri/v/K4v7/uNb9/5W57/9Vbpn/krj5/7/V/P+60fz/udD8/7vR/P++1Pz/wtn9/8Lb/f9VWXb/VFh1/0NIXP8xOUX/MjtI/zA5Rv8xOkn/R0xn/0NJYv8sM0L/OUph/ygzQf8lMDz/MjpN/z5EX/86Smj/UGmT/zZEW/8MDAz/Cw8Y/woPGP8JDhf/CRAb/0loff/T8/n/I32t/4+fuv/U3fz/zdb7/7vL+v+8zPr/vM/8/8DU/f/H3v7/yeH9/6C20f+dteH/uMv3/8jg/v+kwen/coWj/8PZ/f++1Pz/vNL8/73T/P++1fz/wtn9/73X/f9WWnb/UFRu/zU8Sf8zPEn/MjtI/zM8Sv9ITWj/P0NZ/ywzP/8rNEH/LjtL/z9Sbv9AR2H/MjZJ/yk1Rv8fJS7/Ji88/yguPf8NDQ3/DRAY/wwSHv8LGSz/CiZC/y+Etf/8/f7/h5qp/5Khvf/R2/z/3N77/8XR+v+7zPr/us77/8DV/P+80fH/fIOy/5aZ6v+cn/T/nJ/0/666+P/J4v7/eYea/7HG4/+/1vz/vdP8/73U+/+/1vz/w9r8/6/L7/9WWnb/PUNT/zU+S/80PUr/NT1L/0pPaf9DU3L/KDZE/y02Q/8sNUL/LTZE/2l1pf88RV3/JS86/yUwO/8jKzb/LjZH/214i/8cHR//DhAW/w0TIP8MGiz/HSo6/2t0e//c3+L/2un9/7zR9/+8z/v/x9T6/7vL+v+0yPr/t837/7/V+/9wc7D/l5rz/52h9P+doPT/nJ/0/5yf9P/L2Pv/prbK/6W40//B2P3/v9b8/77V+//A1/3/wtn7/8Tc+/9RVm//OEFO/zY/TP82P03/S1Bq/0VWdv8+k9z/KjM+/y43RP8tNkP/OD5R/zpEWv86S2L/LjZF/zI7Tf8qMj//S1l3/7DO9v9aYmz/Dw8Q/1FHQ/+vr6//9vj5/+v0/v/W6P7/x979/8DV/P+3zvv/sMf6/6zD+v+xx/v/uM78/5ipyf9zaeP/mZvz/52h9P+dofT/oqb0/6Cj9P+9yPn/sMHX/63B3f/C2f3/wNj8/8DX/P+wxuf/lazP/5a8+P9BSVr/OUJP/zdATv9KT2j/R1d2/0GY4/8+kdn/LjZB/y84Rf8tNUL/LTM//zhEV/9HU3D/XGaQ/z9FXv82PlL/g6jl/4Km3P+mvdT/IiQm/1xNRf/g4un/0eb+/8zj/v/L4f7/xt39/7/V/P+2y/v/mrf5/4mq9/+Iqvj/n736/5amxf90aeT/jYrw/52h9P+dofT/srb2/6On9P+yyfH/qr/Y/7nP7f/D2v3/qL7g/3+Yw/91l9T/hrH5/4ez+v86RFD/OUJP/0lPZf9LVnL/QpXd/0Wl+P88iMv/MTpG/zA5Rv8tNUH/MztL/1ljiP9bY4v/ZW2b/zI3SP9eeaf/SVt5/3ye1f+ave7/nrPN/y4xNP+Nnaz/zeT+/8zj/f/K4P7/xdv9/7/U/P+ow/r/haj4/3uh9v99o/f/nrz6/77T9f9iW7X/enDs/4yI8P+YmfP/lpfy/4OUzv/J4f3/oLPL/7zT8v+AmcH/eJ3e/4my+f+Ls/n/i7T6/463+v87RU//REtd/05Sav84Y4n/R6X4/0Wl+P88g8L/MjtI/zI7SP81PUz/TVFu/3R8sf9fZY7/T1h5/zM4SP85SF7/O0hd/5G5+v+Tu/r/e4ud/42drv/N4/3/zeP9/8zi/f/I3/3/xNr8/77S/P+cufn/f6T3/3yi9/9/pPf/sMn7/8PZ/P+CjLP/dmzh/21j0v9lYbb/g4y5/8bb9v/M4v7/kqS6/3qZzP+LtPn/irP6/32i4v+Mtfr/jrb6/422+P9ASVb/U1dw/zg/S/8/e7D/Sab5/0el+P89hMH/MzxJ/zM8Sv9KT2n/XmSK/2dtmf9KUGv/TVV1/zI+VP8tNUL/bou6/5G5+v9zjbX/KjI7/7rQ7P/O4/7/zeT+/8zi/v/I3v7/w9j8/77S/P+xyPv/lLP4/5e1+f+sxPr/n7nk/8HX/P/F3Pv/nrHH/7HH3v/J4vz/yuP9/8vi/v/L4v7/h5/B/4+4+f+KtPr/eaDf/2SBtP+Otvr/j7f6/4Kq3/9TWHH/REpa/0hPY/9Ch8P/Sqb5/0mm+f8/hsX/ND1K/0RLYP9RVXL/Vlx8/05Sbv9bYYb/OkRZ/zE4Rv9RXnn/kLj6/3GPvv8tNUP/UF94/7XO8P/O4/7/zeP+/8zi/v/I3f3/wtj8/77T/P+5zvz/tcv7/7XL+/+wxvT/pLzn/8DV/P/E2v3/x9/+/8ri/v/K4/3/yuP9/8rj/f/K4/3/hZq1/5S7+v92m9f/LDpP/4Ot8f+Nt/r/hq/r/5S67v9YXHb/Vlp1/0dOYP9Dicf/S6f4/0un+P9Dj9L/OkJQ/1JWc/9NUmz/REpf/1FVcv9QV3T/O0hb/z1EV/+HqeP/aISx/y43RP87QVb/f5zK/3N/jf/O4/7/zuP+/8zi/v/J3v7/xNr8/8DV/P+70Pz/uM37/7jM+/+5zfv/ssr7/7DK+/+70/z/xdv8/8ff/v/L4f7/yuL+/8rj/f/L5P3/ZV1b/3KFn/8kLT//YH6u/4i0+/95ntv/kbjr/1Numf9bX3v/U1hw/0tSZv9Dhr//S6j3/0un+P9Ppu3/SExh/09Ubv87Q1P/UFVw/09UcP9FUGf/REhe/2iHvP9VbJL/LjdD/0BGXf9VY4L/YnSL/3F8jv/P5P7/zuP+/83j/v/K4P3/xt39/8PZ/P+/1Pz/u9H8/7rQ+/+60Pv/kbP5/4Wr+P+Zufn/wtj8/8Xc/f/H3/3/yuD+/8zj/v+/0+n/Pzk6/ycvQv9LXYL/gqrr/0Zcfv95ndf/aYi6/yYuQv9aXnn/U1lw/0RMW/9DfrH/Tan4/0uo9/9eu/v/QlJr/zpDUf9LUGj/U1d0/0tQaf9NUWv/UWOH/0BQaP8yO0j/Q0lg/0tQaf9VYnP/OT9S/6W2yv/P5f7/z+X+/83k/v/M4v7/yd/9/8bd/f/D2fz/wtT0/4eVrv99jKf/tMz6/5+++v+zzPv/wtj8/8Ta/f/G3f3/yN/+/9nq/v+Uoa//MThR/zM7U/9HXX7/KTJG/2SDtP9zls//JjBE/0JQcf9aX3n/VVpz/z5HVP9Fcpz/Tan4/06q+P9vzP3/PWGC/0hPY/9VWXb/VFh1/05Sa/9DUGj/P05j/zU8Sf9TWXj/TlJu/zA2Qv84QFD/XmZ6/8/l/v/P5f7/z+X+/8/l/v/N5P7/zOL9/83h+v+IkqD/JFFw/xmEv/87kL3/Q2F8/7LG5//C2Pz/w9n9/8Xb/f/G3f3/0eT+/+71/v9eaXn/JS8//ygwQv82PVj/aoi7/3me2f8pNEj/MjdS/2mJvf9dYnz/TFNl/1BXbP9UbYv/T6n4/1Sw+f920/7/TYSw/1dceP9WWnf/S1Bm/zQ7Rf88RFP/WmSG/2xyn/9XXHz/NjtK/zhAUP9MUGn/ssTZ/8/l/v/P5f7/z+X+/8/l/v/F2vH/h4aK/0hKUv8UIzb/E0Rn/x9IXP81iKP/OrXh/yVJYv+ru9X/0Njj/8bc+//N4f3/5Ov2/9DZ5P8rMkL/MTlP/yUrO/8tO0//JzNF/xoiLv82O1b/Iic3/xUbJf9eYn3/VFpv/11hfP9UWnH/V6/x/2zI/P930/7/YbLg/1JWbv9PVWz/TVNp/1NYcv9XW3r/foa8/4GJwv9FTGH/PURV/05Tbv+Fkab/xt/9/6vJ9v+myPz/zeP+/8/l/v9icIH/LzAz/5eaoP86QEn/FBoi/xMYIf8SGSP/isjg/0qby/9WY2//5Ojy/+Lm6v/s8/7/s7i+/1Vc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c/9YdIj/es71/3bO/f9sw/v/c8Tq/1lxiP9dYXv/XWF8/1VZcf9LUGL/UVhu/213nv9/h7j/VFhy/0RKWv9XX3z/YWmM/1VZdv8+RFP/PURU/0xRa/9MUWr/TlFs/zY8Sv87QlT/P0JW/z9Scf86erX/OYnP/zqM0/84hMj/M2uf/ztNaf9UYIP/WGWL/1dojf9keqL/dImp/2+NqP9pbYb/aGyF/2drhP9na4T/ZmqD/2Vpgv9laYL/ZGiB/2Rogf9jZ4D/X3OK/3bE6P950f3/Z7/7/3HJ+v9jmLT/VWF3/1pfeP9cYHz/W197/1ldef9eY4H/hIu//3yEtP9hZoj/TVFm/0lOYf9SV3H/VFh1/1RYdP9KTmb/QEVY/0NJX/82U3L/PH+8/0Oi9v9Co/f/QaP3/0Gj+P8/nvL/NoDB/2CHt/+Pt/b/iK3p/2+WzP9ak8n/O4G+/5240/9kaH3/am6H/2lthv9maoL/Z2uE/2drhP9maoP/ZWmC/2Rogf9gZHv/WV5x/1Jaav9ZhJ7/VZPB/0yEtv9NfaT/RWiJ/0BIUv9RVGf/ZmyN/3h+qv+Di77/c3mi/2hukv9pbpP/bXOa/3F3of9fZIX/Vlp2/1VZdv9MUmv/PFBq/zZtm/87gb3/PYjJ/zyIy/89is//OoXH/zyS2/83gL//OIXI/z2Q1v86icz/OpDc/z6g9/8/l+H/nbXO/87j/v90cHz/am6H/2puh/9hZ3z/aGyF/2drhP9na4T/ZmqD/2Vpgv9laIL/Y2eA/15jef9YXnH/U1pr/1FYaf9PVmf/UFZo/1JYbP9VWnD/UlVp/1VZcP9dYn7/aG6R/3F3oP98hLP/fIOy/2Noiv9OU2v/SV9//0t/q/9QpOX/U7D6/1Ot8v9Jmdn/P4rL/0OPzf9Kls3/SZbO/zh8t/9IqPX/UJ/Q/2PE/P9fw/z/Urb7/2DD/f9yobv/zuP+/87j/v+Yion/a2+I/2puh/9hZnr/ZmqC/2hshf9obIX/Z2uE/2drhP9maoP/ZWmC/2Rogf9kaIH/Y2eA/2Jmf/9hZYH/YWV//2Bkfv9fY37/XmJ+/1tfeP9RVGj/SExb/0tRY/9DSVf/OEBL/0Ruiv9JeJP/R36l/1ykzP9rveT/dNH9/3HP/v9pyPz/bs79/3DR/f9w0f7/ZMT8/0Sk+P9Lk8H/ZrPV/2q+5f9ryvj/asz6/12r0P+lv97/uNX8/8Pc/P/Suq//aGyC/2tviP9nbIP/XGNz/2puh/9pbYb/aGyF/2drhP9na4T/ZmqD/2Vpgv9kaIH/Y2eA/1xfdP9XWm7/Vlls/1JWZ/9MUV//RkxY/0RLVv9MWGr/XmyI/11og/9QV2z/Vlt1/0Z2o/9Mn+f/PnGd/0SIxP9HmN7/R5DL/1Cazf9Xos//Yq7U/5TY9v+l4v3/a8f8/0CLzP8zRVX/MjpG/zpAUv8/Q1j/Qkhf/0ZVbP9uh6z/j6nO/56/8P/Pysf/h4eS/2xwiP9rb4j/V19t/2lthf9qbof/aW2G/2hshf9na4T/Z2uE/2Zqg/9laYL/ZWmC/2Rogf9kaIH/YWV9/2Jmf/9iZYD/YWV//2Bkff9fY37/YGSB/2twk/9tc5j/Vl52/0dTZf9HhLv/T6f3/0SJxP9AeKn/Q4jD/0mh7f9Lp/j/S6X1/0eR0/9bnM7/UZrJ/z5mjf9ES2P/P0Za/zc/T/8wOEX/LDM9/0NRZ/9WaYj/bomw/42kx/+TlqH/0NHT/2tvhv9tcYn/X2Z3/15ldv9qbof/am6H/2puh/9ma4P/aGyF/2drhP9na4T/ZmqD/2Vpgv9kaIH/ZGiA/1xfdP9TVmb/S1Bd/0lPW/9HTVn/Q0pV/0FHUf9KVGP/X2uH/2l1mP9fZoT/SHCa/1u09f9WpNz/S42+/0KCuf9Disb/S6f4/0un+P9Lp/j/Sqb5/0im+f8/h8f/OEBP/0ZMYv9LT2n/SE1n/0lRa/9SW3v/OD5P/0NKWv9nbH3/5OXm/42Qmv9tcYr/aW6E/1NcZ/9obYT/a2+H/2puh/9kaX//X2V4/2hshf9na4T/Z2uE/2Zqg/9kaIH/XWF2/2NngP9kaIH/Y2eA/19je/9gZX//b3WY/4GItv95gKr/aG2O/1lddP9LT2D/PUJM/0dldP91z/n/d9P+/2Wx1f9Kh7P/QH6z/0qk8/9Lp/j/R5jf/0OIwP8/dqP/R01k/ztDU/8uNT7/YnaZ/4mXtf+Ej6j/f4uh/4mXrP9kaXX/m56p/+Dg4f9tcYb/bnKK/1xjcv9cY3L/bHCI/2tviP9qbof/WmBx/1ZaaP9maoP/aGyF/2drhP9qbon/aW6K/1xjd/9VXW7/WWF0/2VtiP9vdpf/Z22K/1VZbf9JTVv/QUZP/z5ETP8/Rk//QUhT/0hQYP9WeZD/d9P9/3fT/v920/3/Y6rN/0h3lP9Disj/RI3N/125+/83VXD/QEVW/09Tbv9JUmv/RFJm/5Oy4//I4P3/z+X+/87j/v+ztbj/cHeN/9fS0v+jlpb/b3OL/2puhP9VXmj/Zmt//2xwiP9rb4j/am6H/11jdf9PVV//Wl5v/2drg/9obIb/cXaV/3uBpv+BiLL/fYeu/2Vvif9TWmv/UVho/1BXZ/9PV2f/UVhp/1NZbP9YXXT/XWF8/11ifP9VWG//WYmg/3jT/v951P7/ktz+/4rY/f9Ro+L/V7P5/1GWw/8+Z43/P0VV/3CJsf9VXnn/YWqQ/z5JWv9+msb/vNj8/87j/v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
  475. , "IQDB");
  476. linkPanel.appendChild(panel);
  477.  
  478. panel = CreatePanelImage("https://saucenao.com/search.php?db=999&url=" + data.imgSrc + "&"
  479. , "data:image/bmp;base64,Qk02AwAAAAAAADYAAAAoAAAAEAAAABAAAAABABgAAAAAAAADAADEDgAAxA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////////////////AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA////AAAA////////AAAAAAAAAAAAAAAAAAAAAAAA////////AAAA////AAAAAAAAAAAAAAAA////////////AAAAAAAAAAAAAAAA////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAAAAAA////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAAAAAA////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAAAAAAAAAAAAAA////////////AAAAAAAAAAAAAAAA////AAAA////////AAAAAAAAAAAAAAAAAAAAAAAA////////AAAA////AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  480. , "SauceNAO");
  481. linkPanel.appendChild(panel);
  482.  
  483. panel = CreatePanelImage("https://imgops.com/" + data.imgSrc.replace("http://", "") + "&"
  484. , "data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAA/wAAAP///wAA7v8AAP8VAC8A/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUFBQUAAAAAAAAAAAAABQUFBQUFAAAAAwMDAwAAAAUFBQUFBQAAAAMDAwMAAAAFBQUAAAAAAAAAAAMDAAAABQUFAAICAgICAgADAwAAAAUAAAAAAAACAgIAAwMAAAAFAAQEBAQAAgICAAMDAAAABQAEBAQEAAICAgADAwAAAAUABAQEBAACAgIAAAAAAAAAAAQEBAQAAgICAAEBAQAAAAAEBAQEAAICAgABAQEAAAAABAQEBAAAAAAAAQEBAAAAAAQEBAQAAQEBAQEBAQAAAAAAAAAAAAEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAD/AAAAgQAAAIEAAACBAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAP4AAAA="
  485. , "ImgOps");
  486. linkPanel.appendChild(panel);
  487.  
  488. panel = CreatePanelImage("https://encrypted.google.com/searchbyimage?image_url=" + data.imgSrc + "&safe"
  489. , "data:image/x-icon;base64,AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAASCwAAEgsAAAAAAAAAAAAA9IVCSvSFQuf0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULk9IVCSvSFQub0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQuf0hUL/9IVC//SFQv/0hUL/9Y1O//rIq//+7+f//eXX//vUvf/7z7X/96Fu//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//vYwv/97OH/9ZRZ//SFQv/0hUL/9IhG//zbx//3om7/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/97uX/+buW//SFQv/0hUL/9IVC//SFQv/5upT/+9O6//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/+b6b//zezP/0iEf/9IVC//SFQv/1klf//ezh//vPtP/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/3qXr/+siq//m8lv/5wqD//vTu//3t4//1klb/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0h0b//vbx//zi0//1j1H/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/2nmn/+bmS/////v/4sIX/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/5uJH///v5//eoef/1jU//+82y//afav/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL//vXw//vOs//0hUL/9IVC//ekcf/96+D/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//728v/4sIX/9IVC//SFQv/4s4n///v4//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/6yKn/+byX//SFQv/0hkT//eTV//vWv//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IZE//m6lP/5u5b//OHQ///+/f/6y6//96d3//SFQv/0hUL/9IVC//SFQv/0hULm9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULm9IVCSfSFQub0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULm9IVCSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAASCwAAEgsAAAAAAAAAAAAA9IVCAPSFQif0hUKt9IVC8vSFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQvL0hUKt9IVCJ/SFQgD0hUIo9IVC7/SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULv9IVCKPSFQq30hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUKt9IVC8fSFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQvP0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9YtL//i2jv/828f//vLr///7+P///Pv//vTu//3n2v/6zbH/96Nw//SFQ//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//ekcv/+8+z////////////+9fD/+9K5//m9mf/4to7/+buV//vSuf/++PT//OPT//aYYP/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/2l13///r3/////////fv/+b2Z//SIRv/0hUL/9IVC//SFQv/0hUL/9IVC//WNT//84M///vXv//aZYf/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//vPtP////////////i0i//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//WQUv///Pr//OPU//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL//eTV///////+9O7/9IVD//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//3m2P//////9ppi//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/718H///////3s4f/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL//vDn///////4soj/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//erff////////38//WTWP/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//iziv////////////iwhf/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//rMsP///////eXW//WSVv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/4sYb///z7/////////Pv/9ZFV//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//ixhv/+8Of//vn1//rMsP/4rH//9plh//WQUv/1j1L/+s2x//////////////////m9mf/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SGQ//2nmn/+buW//vNsv/82sb//e3j/////////////////////v/5wZ//9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/83Mj////////////++fb/+K+C//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9ZRZ/////////////vTt//aaYv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/1lFr////////////6xqf/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//ehbf/70bj//end//3o2////v3///////3l1//0iEb/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/5wqD////////////96t7/96Z2//WOUP/2nWf//NvH//zcyP/1i0z/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/96l6/////////////vLr//WPUf/0hUL/9IVC//SFQv/0h0b//end//3k1f/0iUn/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/8387////////////4sYf/9IVC//SFQv/0hUL/9IVC//SFQv/6w6L///////nBn//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC///69////////vj1//SIR//0hUL/9IVC//SFQv/0hUL/9IVC//m+mv///////e3j//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL///r3///////8387/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/+syw///////++fb/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/95NX///////vUvP/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/97OH///////7y6//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//i2jv///////N/O//SFQv/0hUL/9IVC//SFQv/0hUL/96Nx////////////+s2x//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IdF//zh0P//+/j/9ZJW//SFQv/0hUL/9IVC//SKSv/96t7///////738v/1k1f/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9YxN//vUvf/96+D/96Z0//WNT//3om///ebY/////////Pv/+LKI//WVW//0h0X/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//agbP/7zbL//enc//749P////////////////////////////3r4P/3p3f/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULx9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC8/SFQq30hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUKt9IVCJ/SFQu/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC7/SFQif0hUIA9IVCJfSFQq30hULx9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC8fSFQq30hUIl9IVCAIAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAB"
  490. , "Google");
  491. linkPanel.appendChild(panel);
  492.  
  493. panel = CreatePanelImage("https://www.tineye.com/parse?url=" + data.imgSrc + "&"
  494. , "data:image/x-icon;base64,AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAACxeDVItHk157iAO//WtW7/482G/+XOhv/lzYL/1L98/5mTcf8UKUP/CwsM/xwcG/8AAAD/AAAA/wAAAOcAAA5ItHo25LV7Nv+1ezb/tXs2/8GPSf/EoGj/s5hw/6KPdf93bWT/ZFdK/2daTP9hVEj/XU9C/zIpH/8EAgH/AAAA5LV7Nv+1ezb/tXs2/7V7Nv+1ezb/uIA+/8eea//Wtof/48eU/+PKkv/iyJP/4MeV/9u/kf/HqHz/rI1p/3tmT/+1ezb/tXs2/7V7Nv+1ezb/zKV0/+PKlP/hxXr/zbFk/8esYf/VuW7/3sFz/+LFdf/gw3P/48Z3/+nPjv/dwJD/tXs2/7V7Nv+1ezb/y6Nx/9/Gg/+NekT/V0wv/5uSfP95cmH/JiES/zAqGv86Mh3/W08v/3lpQP+Wg03/zLFn/7V7Nv+1ezb/uoVH/8myg/+VgUr/AAAA/2xpZf/i4+X/+fn5/0JAO/8AAAD/LCkl/768uf+/vr3/Mi8q/x0ZEP+2fDf/tXs2/6WGX/+pklP/JyES/0dFQP96eHX/W1tc//////9ua2X/DAoH/6Wim/+EhIX//////6ejnP8AAAD/wo1F/8GLQ//Conf/tZ1e/wYDAP9pZmH/6+vs/9/f3/////3/Pjoz/zo2Lf/Jycb/UlJT//////+xraX/AAAA/8OORv/Djkb/1bF+/821cf83MSD/MC4s//n49P//////l5OJ/wMCAP9IRDr/////////////////ZGBW/wAAAP/Djkb/w45G/8qkcP+sllr/wKtw/zw5Mf9MSUb/VlNM/wIBAP8AAAD/FxUP/9PQyv/8+/j/rKig/wkHA/8AAAD/w45G/8OORv+1jlj/l4hm/8etZv/QuHf/m4xk/21hSP9PRjX/Mi0j/xsYFf87NzD/VFBK/xUVFf8FBwz/CQsQ/8OORv/Djkb/g2I1/8Oea//Mt4z/uJxU/56hhv92nLj/l6ut/56poP+gpJL/mJeC/5aMbP+bjmv/m49t/52Qbv/Djkb/uItP/05PUP+zjlv/yptc/9C3jP9gYFP/ABVH/wAzc/8IP4T/FUuM/xhSmP99lZ3/5sRv/9S6cf/Lsmr/w45G/1B7rv8bbdT/LWy5/8OORv/Djkf/yqRw/zswIP8AAAD/AAAA/wAAAP8AAAD/Fyk8/5CKZ/+ahU3/modW/8GNReeEj5r/L37g/0Jxqf/Cjkf/w45G/8OORv/Fllb/clYw/zoqFf8hGQ3/IhwU/x4ZFf9HRUD/vaJ5/86pdee+ikU/woxEyZ6HZ/+8jEz/w45G/8OORv/Djkb/w45G/8OORv/Djkb/v4tF/8ORTf/GlFD/xJBJ/8KMRMm+ikU/gAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAE="
  495. , "TinEye");
  496. linkPanel.appendChild(panel);
  497.  
  498. setTimeout(ControlHQ.setPanelVisibility, DELAY, document.getElementById("LinkPanel"), false);
  499.  
  500. HideLinks();
  501. linkPanel.onmouseenter = ShowLinks;
  502. linkPanel.onmouseleave = HideLinks;
  503. }
  504.  
  505. function HideLinks()
  506. {
  507. var links = linkPanel.querySelectorAll("[data-href]");
  508. for (var i = 0; i < links.length; i++) links[i].href = "";
  509. }
  510.  
  511. function ShowLinks()
  512. {
  513. var links = linkPanel.querySelectorAll("[data-href]");
  514. for (var i = 0; i < links.length; i++) links[i].href = links[i].getAttribute("data-href");
  515. }
  516. },
  517.  
  518.  
  519. createControlPanel: function ()
  520. {
  521. var btn, panel = document.createElement("div");
  522. panel.id = "ControlPanel";
  523.  
  524. var keys = ["a", "s", "z", "x", "d", "f", "c", "v"]
  525. for (var i = 0; i < 4; i++)
  526. {
  527. btn = document.createElement("div");
  528. btn.className = "resizeBTN";
  529. btn.onclick = ControlHQ.resizeButtonClick;
  530. btn.setAttribute("style", "position:relative");
  531. panel.appendChild(btn);
  532. }
  533.  
  534. var btns = panel.getElementsByClassName("resizeBTN");
  535. btns[0].style.backgroundImage = "URL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAgklEQVR42mNkGGDAOOoAcjWeOXPmPzLfxMSELLNGHTC0HIBuKS5AimNIdjUhR5AaEmQFGy5HkBMNQysN4HIEuZZT7ABqgKHrAGDwL0bmA6MhdiAcEAPlLhmxDoADujuAWmBoO2BAC6IBLYoHtDIa0Op4UDRIcDlmZLQJRx1ACzDqAABrqFohocSl/AAAAABJRU5ErkJggg==')";
  536. btns[0].title = "Auto-Fit Height (a)";
  537. btns[1].style.backgroundImage = "URL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAeElEQVR42u3UbQqAIAwG4HanHcdOV8fZnbLAQERzLnIE7/4I6l4e8IMW5yIAAAAAAACeFkXkYOZXyF5GF3CNVoSmXwWwILS91GqqVR507t2KtdWSMwTImxMgpOn9Boxk/A/w+RGUNf0StkJcn6HrRzSjAAAAAAAAiN9oYiGanAXaAAAAAElFTkSuQmCC')";
  538. btns[1].title = "Auto-Fit Width (z)";
  539. btns[2].style.backgroundImage = "URL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAs0lEQVR42u2XYQqAIAyF804ep05Xx/FOlZAgw7k5zSW5P4L43j5zyjKLcpgJUCN2zp1+tNaKfcTCkDyEFEIkgslrIIoFWHIpRNFiKrkEYswa+A+AT4IZcwFyHlmAFo8Mx4fcXSsAzMvkBKkIJve6HcxvJfokAOeeA4D1mT64ABDiWwAln/CVI0hBdC9CKFS5hrFY7SHi7owCoGICjNeQqLZkFESXphSD6F6EMYTKj0mrmAAX79KqIbEwc3wAAAAASUVORK5CYII=')";
  540. btns[2].title = "Stretch (z)";
  541. btns[3].style.backgroundImage = "URL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAChSURBVFhH7Y7RCsAgCEX79P58Q0kQuXPWKhnbgfNS6r3l5+0czRQkPKWEDRe3gIK1S0GByC2khGq+UcA7HC3g/bncHY4ydEeWZhYI39ILSKbWemjbM2HnrS5owcq0ULazAHkJGrYyqwoQaEHLUKi2PRN23hqie8Fh+NbsAkN4i3L4LsD7e0S0wDK+WcCGXrkUFKjdAgomt5IaLqSG/0yglBOoVtk5dyQmaAAAAABJRU5ErkJggg==')";
  542. btns[3].title = "Fill Client Area while keeping ratio (x)";
  543.  
  544.  
  545. for (var i = 0; i < 4; i++)
  546. {
  547. btn = document.createElement("div");
  548. btn.className = "transformBTN";
  549. btn.value = 0;
  550. btn.onclick = ControlHQ.transformButtonClick;
  551. panel.appendChild(btn);
  552. }
  553.  
  554. TSL.addStyle("SpinMeRightRound", ".rotate90 {-webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -o-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg);}"
  555. + ".reflectMe {-webkit-transform: scaleX(-1) ; -moz-transform: scaleX(-1) ; -o-transform: scaleX(-1) ; -ms-transform: scaleX(-1) ; transform: scaleX(-1);}"
  556. );
  557.  
  558. btn = document.createElement("button");
  559. btn.textContent = "Edit";
  560. btn.setAttribute("style", "width:100%;margin-top: 5px;");
  561. btn.onclick = Styler;
  562. panel.appendChild(btn);
  563.  
  564. var btns = panel.getElementsByClassName("transformBTN");
  565. btns[0].style.backgroundImage = btns[1].style.backgroundImage = "URL('data:image/png;base64,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')";
  566. TSL.addClass(btns[0], "reflectMe");
  567.  
  568. btns[2].style.backgroundImage = "URL('data:image/png;base64,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')";
  569. TSL.addClass(btns[2], "rotate90");
  570. btns[3].style.backgroundImage = "URL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAACXBIWXMAAIhIAACISAFlEbUFAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAnJJREFUeNq810uIjWEYwPHfGfc7ydCQexZuoZEFahRhXBpEyL2EhCgLykopQsrGRknGwkIW1CQllJJxDRtySyHCwtAw5tg8R6dp5jTn8nnq6XS+3u99/+9z/1LpdFplZaX/JBWowSM01NfXP+z4nw7ugenYGgC38BnLkgboiYXYg6lZz2fiCyQBkMJAVOEAxray5mdoSQE6YArmYR1G51ibDi0JQArTsB4r0Tefl4sB6Bq+XIHFKC9kk0IAOmMR1qA6/hcs+QD0x9y48fxiD84HoAJbsAAT0amUKZMLYAB2YzWGJZCqqbYAJkXFqsZglCVQK7qF/gPoHCbeiQnh7yTlSctKOAuHMRwfok7/yZiphGYvwyvsR0M2wA3MwG80JXz732hsrRL+Ck0nDNCUfUYGoApH0AvvA6SlC1Kxviw2aC4w8p/jIH7gQwagHrXYiHHo3cYmDfHbvYj4mI5REYQ1GYDPEYTHopttCKtkZ0MjruBq9IHyTCq1UxoxEkuih3xrrQ404XLoJGzHcvRBl3h2DxfxooDbT4mM65YJ9lxF5iE2R3acwhuMCUs9xpmwVu88AMrjIs3tAcguGtvCJXtxM/rB+nBJLVZhUDv2SrcsxfmU2dc4GkPljhgsxcxXi/MBktdcUEid/xouWR4HXsqqpmdRh0MY0UYqFg2QkY+4EN2yOgK3IyZjH27jBIZkvdNcSoDsCbcuBpU5YZ1PERO7cAeno8+8i/U523ExINdwHSdjTtwRA80mzMZb9Iua0JTUd8EfPAu9gGUx2AwNzWRDl1K5IJe8xHGMx1rcjecPcD8pC7RmkS84h6dYGnHxHf4OAC4xiB00QTv4AAAAAElFTkSuQmCC')";
  571.  
  572.  
  573. for (var i = 0, preview; i < 9; i++)
  574. {
  575. btn = document.createElement("div");
  576. btn.className = "cssBTN";
  577. btn.id = "cssBTN" + (i + 1);
  578. btn.title = "Sets CSS" + (i + 1) + "style";
  579. btn.onclick = changeCSS;
  580. //btn.onmouseenter = previewCSS;
  581. //btn.onmouseleave = savedCSS;
  582.  
  583. preview = document.createElement("div");
  584. preview.textContent = (i + 1);
  585. preview.className = "cssPRE";
  586. preview.id = "cssPRE" + (i + 1);
  587. btn.appendChild(preview);
  588. btn.value = i + 1;
  589. panel.appendChild(btn);
  590. }
  591.  
  592. function changeCSS(e)
  593. {
  594. clearTimeout(this.tid);
  595. GM_setValue("CSS-Selection", this.value);
  596. document.body.className = "CSS" + this.value;
  597. }
  598.  
  599. function previewCSS(e)
  600. {
  601. clearTimeout(this.tid);
  602. var value = this.value;
  603. if (GM_getValue("CSS-Selection") != value)
  604. document.tid = setTimeout(function ()
  605. {
  606. document.body.className = "CSS" + value;
  607. }, 500)
  608. }
  609.  
  610. function savedCSS(e)
  611. {
  612. clearTimeout(this.tid);
  613. document.body.className = "CSS" + GM_getValue("CSS-Selection");
  614. }
  615.  
  616.  
  617. document.body.appendChild(panel);
  618. },
  619.  
  620. showControlsPanel: function ()
  621. {
  622. var panel = document.getElementById("ControlPanel");
  623. clearTimeout(panel.timeoutID);
  624.  
  625. panel.style.visibility = null;
  626.  
  627. var btns = document.getElementsByClassName("resizeBTN");
  628. btns[0].style.backgroundColor = (ResizeMode & 2) ? "yellow" : null;
  629. btns[1].style.backgroundColor = (ResizeMode & 4) ? "yellow" : null;
  630. btns[2].style.backgroundColor = (ResizeMode & 8) ? "yellow" : null;
  631. btns[3].style.backgroundColor = (ResizeMode & 16) ? "red" : null;
  632.  
  633. panel.timeoutID = setTimeout(function () { document.getElementById("ControlPanel").style.visibility = "hidden"; }, DELAY);
  634. },
  635.  
  636. resizeButtonClick: function ()
  637. {
  638. var btns = document.getElementsByClassName("resizeBTN");
  639. for (var i = 0; i < btns.length; i++)
  640. {
  641. if (btns[i] == this)
  642. {
  643. ControlHQ.adjustSizeMode(i + 1);
  644. return;
  645. }
  646. }
  647. },
  648.  
  649. transformButtonClick: function (e)
  650. {
  651. var img = document.getElementById("theImage");
  652. var css = "";
  653.  
  654. var btns = document.getElementsByClassName("transformBTN");
  655.  
  656. if (btns[0] == this) btns[0].value--;
  657. else if (btns[1] == this) btns[0].value++;
  658. else this.value++;
  659.  
  660. if (btns[0].value == -1) btns[0].value = 3;
  661.  
  662. if (btns[0].value == 1) css = "rotate(90deg)";
  663. else if (btns[0].value == 2) css = "rotate(180deg)";
  664. else if (btns[0].value == 3) css = "rotate(270deg)";
  665. else btns[0].value = 0;
  666.  
  667. if (btns[2].value == 1) css += " scaleX(-1)";
  668. else btns[2].value = 0;
  669.  
  670. if (btns[3].value == 1) css += " scaleY(-1)";
  671. else btns[3].value = 0;
  672.  
  673. css = css.trim() + "; ";
  674. css = "transform: " + css + "-webkit-transform: " + css + "-moz-transform: " + css + "-o-transform: " + css + "-ms-transform: " + css;
  675.  
  676. TSL.addStyle("RobotsinDisguise", "#theImage {" + css + "}");
  677.  
  678. if (this.value == 0) this.style.backgroundColor = null;
  679. else this.style.backgroundColor = "yellow";
  680.  
  681. btns[0].style.backgroundColor = (btns[0].value) ? "yellow" : null;
  682. btns[1].style.backgroundColor = btns[0].style.backgroundColor;
  683.  
  684. ControlHQ.readjustImageSize();
  685. },
  686.  
  687. readjustImageSize: function ()
  688. {
  689. var img = document.getElementById("theImage");
  690. img.removeAttribute("class");
  691. img.removeAttribute("width");
  692. img.removeAttribute("height");
  693.  
  694. var reverse = (document.getElementsByClassName("transformBTN")[0].value % 2 == 1);
  695.  
  696. // 2=Height, 4=Width, 8=Stretch, 16=Fit
  697. if (!reverse)
  698. {
  699. img.style.maxHeight = (ResizeMode & 2) ? window.innerHeight + "px" : null;
  700. img.style.maxWidth = (ResizeMode & 4) ? window.innerWidth + "px" : null;
  701. }
  702. else
  703. {
  704. img.style.maxWidth = (ResizeMode & 2) ? window.innerHeight + "px" : null;
  705. img.style.maxHeight = (ResizeMode & 4) ? window.innerWidth + "px" : null;
  706. }
  707.  
  708. if (ResizeMode & 16) //Fit image
  709. {
  710. var imageRatio = (reverse) ? (img.naturalHeight / img.naturalWidth) : (img.naturalWidth / img.naturalHeight);
  711. var clientRatio = window.innerWidth / window.innerHeight;
  712. if (!reverse)
  713. {
  714. img.style.width = (imageRatio >= clientRatio) ? window.innerWidth + "px" : null;
  715. img.style.height = (imageRatio < clientRatio) ? window.innerHeight + "px" : null;
  716. }
  717. else
  718. {
  719. img.style.height = (imageRatio >= clientRatio) ? window.innerWidth + "px" : null;
  720. img.style.width = (imageRatio < clientRatio) ? window.innerHeight + "px" : null;
  721. }
  722. }
  723. else if (ResizeMode & 8) //Stretch
  724. {
  725. if (!reverse)
  726. {
  727. img.style.height = (ResizeMode & 2) ? window.innerHeight + "px" : null;
  728. img.style.width = (ResizeMode & 4) ? window.innerWidth + "px" : null;
  729. //Resize taking into account ScrollBars
  730. if (ResizeMode & 2 && document.body.scrollWidth > document.body.clientWidth) img.style.height = (window.innerHeight - ScrollBarThickness) + "px";
  731. if (ResizeMode & 4 && document.body.scrollHeight > document.body.clientHeight) img.style.width = (window.innerWidth - ScrollBarThickness) + "px";
  732. }
  733. else
  734. {
  735. img.style.width = (ResizeMode & 2) ? window.innerHeight + "px" : null;
  736. img.style.height = (ResizeMode & 4) ? window.innerWidth + "px" : null;
  737. //Resize taking into account ScrollBars
  738. if (ResizeMode & 2 && document.body.scrollWidth > document.body.clientWidth) img.style.width = (window.innerHeight - ScrollBarThickness) + "px";
  739. if (ResizeMode & 4 && document.body.scrollHeight > document.body.clientHeight) img.style.height = (window.innerWidth - ScrollBarThickness) + "px";
  740. }
  741. }
  742. else //Height & Width
  743. {
  744. img.style.height = null;
  745. img.style.width = null;
  746.  
  747. if (ResizeMode & 2 && document.body.scrollWidth > document.body.clientWidth) img.style.maxHeight = (window.innerHeight - ScrollBarThickness) + "px";
  748. if (ResizeMode & 4 && document.body.scrollHeight > document.body.clientHeight) img.style.maxWidth = (window.innerWidth - ScrollBarThickness) + "px";
  749. }
  750.  
  751.  
  752. //Image placement algorithm
  753. var w = img.clientWidth,
  754. h = img.clientHeight;
  755. console.log(w / h, h / w);
  756. img.style.position = "absolute";
  757. img.style.left = 0;
  758. img.style.top = 0;
  759. if (reverse)
  760. {
  761. var offsetW = ((h - w) / 2);
  762. var offsetH = ((w - h) / 2);
  763.  
  764. if (h < window.innerWidth) img.style.marginLeft = (((window.innerWidth - h) / 2) + offsetW) + "px";
  765. else img.style.marginLeft = (offsetW) + "px";
  766.  
  767. if (w < window.innerHeight) img.style.marginTop = (((window.innerHeight - w) / 2) + offsetH) + "px";
  768. else img.style.marginTop = (offsetH) + "px";
  769. }
  770. else
  771. {
  772. if (w < window.innerWidth) img.style.marginLeft = ((window.innerWidth - w) / 2) + "px";
  773. else img.style.marginLeft = "0px";
  774.  
  775. if (h < window.innerHeight) img.style.marginTop = ((window.innerHeight - h) / 2) + "px";
  776. else img.style.marginTop = "0px";
  777. }
  778.  
  779.  
  780.  
  781. ControlHQ.showControlsPanel();
  782. },
  783.  
  784. adjustSizeMode: function (mode)
  785. {
  786. var n = Math.pow(2, mode);
  787. var enabled = (ResizeMode & n);
  788. if (enabled) ResizeMode -= n; else ResizeMode += n;
  789.  
  790. var msg = "";
  791. switch (mode)
  792. {
  793. case 1:
  794. msg = "Auto-height";
  795. break;
  796. case 2:
  797. msg = "Auto-width";
  798. break;
  799. case 3:
  800. msg = "Stretch";
  801. break;
  802. case 4:
  803. msg = "Fill Area";
  804. break;
  805. }
  806.  
  807. ControlHQ.readjustImageSize();
  808. GM_setValue("ResizeMode", ResizeMode);
  809. },
  810.  
  811.  
  812. keyDownCallback: function (e)
  813. {
  814. var key = e.which || e.keyCode;
  815. if (document.stopCapture) return false;
  816.  
  817. console.log("KEY", key);
  818. //Load Styles
  819. if (key == 82 || key == 84 || key == 106 || key == 111) // [r] [t] [Num *] [Num /]
  820. {
  821. var n = document.body.className.match(/CSS(\d)/)[1];
  822. if (key == 82 || key == 111) n++; else n--;
  823. if (n > 9) n = 1; else if (n < 1) n = 9;
  824.  
  825. document.body.className = "CSS" + n;
  826. GM_setValue("CSS-Selection", n);
  827. ControlHQ.showControlsPanel();
  828. return false;
  829. }
  830.  
  831.  
  832. if (key == 81 || key == 96) //Reset Size [Q] [Num .]
  833. {
  834. e.stopImmediatePropagation();
  835. var btns = document.querySelectorAll('.resizeBTN[style*=background-color]');
  836. for (var i = 0; i < btns.length; i++) btns[i].click();
  837. return false;
  838. }
  839.  
  840. if (key == 87 || key == 101) //Reset Rotation [W] [Num 5]
  841. {
  842. e.stopImmediatePropagation();
  843. btns = document.querySelectorAll('.transformBTN');
  844. btns[0].value = -5; btns[0].click();
  845. return false;
  846. }
  847.  
  848. if (key == 69 || key == 104) //Reset Mirror [E] [Num 8]
  849. {
  850. e.stopImmediatePropagation();
  851. btns = document.querySelectorAll('.transformBTN');
  852. btns[2].value = -5; btns[2].click();
  853. btns[3].value = -5; btns[3].click();
  854. return false;
  855. }
  856.  
  857. var hk = [65, 83, 90, 88, 68, 70, 67, 86]; // a s z x d f c v
  858. var hkNum = [97, 98, 99, 110, 100, 102, 103, 105]; // Num Keys: 1 2 3 . 4 6 7 9
  859. var btns = document.querySelectorAll(".resizeBtn, .transformBtn");
  860. for (var i = 0; i < hk.length; i++)
  861. {
  862. if (hk[i] == key || hkNum[i] == key)
  863. {
  864. e.stopImmediatePropagation();
  865. btns[i].click();
  866. return false;
  867. }
  868. }
  869. },
  870.  
  871. monitorMouse: function (e)
  872. {
  873. isMouseOverPanel(e, "ControlPanel");
  874. isMouseOverPanel(e, "LinkPanel");
  875. isMouseOverPanel(e, "YoutubeThumbs");
  876.  
  877. function isMouseOverPanel(e, id)
  878. {
  879. var panel = document.getElementById(id);
  880. if (!panel) return;
  881. if (TSL.isMouseEventInClientArea(e, panel))
  882. {
  883. panel.clean = true;
  884. clearTimeout(panel.timeoutID);
  885. if (panel.style.visibility) ControlHQ.setPanelVisibility(panel, true);
  886. }
  887. else if (!panel.style.visibility && panel.clean)
  888. {
  889. panel.clean = false;
  890. panel.timeoutID = setTimeout(ControlHQ.setPanelVisibility, DELAY, panel, false);
  891. }
  892. }
  893. },
  894.  
  895. setPanelVisibility: function (panel, visible)
  896. {
  897. panel.style.visibility = (visible) ? null : "hidden";
  898. }
  899. };
  900.  
  901. (function ()
  902. {
  903. var start = setInterval(function ()
  904. {
  905. if (document.readyState != "loading")
  906. {
  907. clearInterval(start);
  908. ScrollBarThickness = TSL.getScrollBarThickness();
  909. LoadGIV();
  910. }
  911. }, 50);
  912.  
  913. function LoadGIV()
  914. {
  915. console.info("Generic Image Viewer");
  916.  
  917. //Removes old settings
  918. var Version = 1002;
  919. if (GM_getValue("Version", 0) != Version)
  920. {
  921. var names = GM_listValues();
  922. for (var i = 0; name = names[i], i < names.length; i++)
  923. {
  924. var skipNames = ["USO-Updater"];
  925. var found = false;
  926. for (var j = 0; j < skipNames.length; j++) found = found || (name.indexOf(skipNames[j]) == 0);
  927. if (!found) GM_deleteValue(name);
  928. GM_setValue("Version", Version)
  929. }
  930.  
  931. ResizeMode = 0;
  932. GM_setValue("ResizeMode", 0)
  933. }
  934.  
  935. //Cleans the URL links of the postfix "?timidscript_". This tag is used in a personal script that is still in beta phase (2015/06)
  936. if (document.URL.match(/[\?&]timidscript_[_a-z]+$/i))
  937. {
  938. console.log("GIViewer: Removed URL search tag");
  939. window.history.pushState(null, "", document.URL.replace(/[\?&]timidscript_[_a-z]+$/i, ""));
  940. var imgs = document.getElementsByTagName("img");
  941. for (var i = 0; i < imgs.length; i++) imgs[i].src = imgs[i].src.replace(/[\?&]timidscript_[_a-z]+$/i, "");
  942. }
  943.  
  944. var hostname = document.location.hostname,
  945. pathname = document.location.pathname;
  946. if (document.body.children.length == 1 && document.querySelector('embed[type="application/x-shockwave-flash"]'))
  947. {
  948. console.info("GIViewer: FLASH");
  949. ControlHQ.flash = true;
  950. }
  951. else if (document.body.children.length == 1 && document.body.children[0].tagName == "VIDEO")
  952. {
  953. console.info("GIViewer: VIDEO");
  954. ControlHQ.video = true;
  955. }
  956. else if (document.body.children[0].tagName == "IMG" && (
  957. document.URL.match(/.+\.(jpg|gif|jpeg|png|bmp)(\?\d+|:large|:orig|\?[^\\\.\/]+)?$/i)
  958. || document.URL.match(/\/[a-zA-Z0-9]+$/)
  959. || document.URL.match(/\/\/www\.pixiv\.net.+mode=manga_big.*&illust_id=(\d+)/i)
  960. || hostname.match(/^thumbs\..+\.com/i)
  961. ))
  962. {
  963. var imgs = document.getElementsByTagName("img");
  964. if (!document.URL.match("img.youtube") && (imgs.length == 0 || imgs.length > 1 || document.body.children.length > 2)) return;
  965. ControlHQ.displayImage();
  966. }
  967. else if (hostname == "gfycat.com" && document.location.pathname.match(/\/\w+$/))
  968. {
  969. console.info("GIViewer: gfycat");
  970.  
  971. var name = document.location.pathname.substr(1);
  972. url = "https://gfycat.com/ifr/" + name;
  973.  
  974. GM_xmlhttpRequest(
  975. {
  976. url: url,
  977. method: "GET",
  978. headers: { "User-agent": navigator.userAgent, "Accept": "text/html", Referer: "" },
  979. timeout: 10000,
  980. onload: function (response)
  981. {
  982. if (response.status == 200)
  983. {
  984. var doc = new DOMParser().parseFromString(response.responseText, "text/html");
  985. var links = doc.querySelectorAll(".iframe-video .mp4-source, .iframe-video .webm-source");
  986.  
  987. if (links.length > 0)
  988. {
  989. var el = document.getElementById("small-gif")
  990. if (el) el.href += "?hide";
  991.  
  992. el = document.getElementById("large-gif");
  993. if (el) el.href += "?hide";
  994. }
  995.  
  996. var sizes = { thumbs: 0, zippy: 1, fat: 2, giant: 3 }, largestSize = 0;
  997. for (var i = 0; i < links.length; i++) if (sizes[links[i].src.match(/\/\/(\w+)/)[1]] > largestSize) largestSize = sizes[links[i].src.match(/\/\/(\w+)/)[1]];
  998.  
  999. var holder = document.querySelector("#controls-container .left");
  1000.  
  1001. for (var i = 0; i < links.length; i++)
  1002. {
  1003. console.log(links[i].src);
  1004. if (sizes[links[i].src.match(/\/\/(\w+)/)[1]] != largestSize) continue;
  1005. var a = document.createElement("a");
  1006. a.href = links[i].src;
  1007. a.textContent = (links[i].className.match("webm")) ? "WebM" : "MP4";
  1008. a.setAttribute("style", "margin: 0 5px");
  1009. holder.appendChild(a);
  1010. }
  1011. }
  1012. else console.warn("ERROR: ", url);
  1013. }
  1014. });
  1015.  
  1016. return;
  1017. }
  1018. else return;
  1019.  
  1020. if (hostname.match(/^[a-z0-9]+\.pixiv\.net$/i)) //Pixiv Site
  1021. {
  1022. console.info("GIViewer: Pixiv");
  1023.  
  1024. var id = document.querySelector("img").src.match(/\/(\d+)(?:_p\d+|_big_p\d+|_.*master.+)?\.(?:jpg|gif|jpeg|png|bmp)/i);
  1025.  
  1026. if (!id) return;
  1027.  
  1028. id = id[1];
  1029. if (document.URL.match("/profile/"))
  1030. {
  1031. ControlHQ.data.userName = "Gallery [" + id + "]";
  1032. ControlHQ.data.userHome = "http://www.pixiv.net/member.php?id=" + id;
  1033. ControlHQ.data.userGallery = "http://www.pixiv.net/member_illust.php?id=" + id;
  1034. ControlHQ.data.userIcon = document.URL;
  1035. ControlHQ.createLinkPanel();
  1036. }
  1037. else
  1038. {
  1039. ControlHQ.data.imgTitle = "Illustration Page";
  1040. ControlHQ.data.imgURL = "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=" + id;
  1041. ControlHQ.createLinkPanel();
  1042.  
  1043. GM_xmlhttpRequest({
  1044. url: "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=" + id,
  1045. method: "GET",
  1046. timeout: 15000,
  1047. headers: { "User-agent": navigator.userAgent, "Accept": "text/html", Referer: "http://www.pixiv.net" },
  1048. onload: function (response)
  1049. {
  1050. if (response.status == 200)
  1051. {
  1052. var doc = new DOMParser().parseFromString(response.responseText, "text/html");
  1053. var script = doc.evaluate("//div[@id='wrapper']//script[contains(text(),'pixiv.context.illustId')]", doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
  1054. if (script)
  1055. {
  1056. unsafeWindow.eval("pixiv = {}; pixiv.context= {};");
  1057. unsafeWindow.eval(script.innerHTML);
  1058. ControlHQ.data.imgTitle = unsafeWindow.pixiv.context.illustTitle;
  1059. ControlHQ.data.userIcon = doc.querySelector(".user-image").src.replace(".jpg", "_s.jpg");
  1060. ControlHQ.data.userHome = "http://www.pixiv.net/member.php?id=" + unsafeWindow.pixiv.context.userId;
  1061. ControlHQ.data.userName = unsafeWindow.pixiv.context.userName;
  1062. ControlHQ.data.userGallery = "http://www.pixiv.net/member_illust.php?id=" + unsafeWindow.pixiv.context.userId;
  1063. ControlHQ.createLinkPanel();
  1064. }
  1065. }
  1066. }
  1067. });
  1068. }
  1069. }
  1070. else if (hostname.match(/^\w+\.deviantart\.net$/i)) //deviantart
  1071. {
  1072. console.info("GIViewer: DeviantArt");
  1073.  
  1074. var id = pathname.match(/-(d\w{6})\.(?:jpg|bmp|png|gif|swf)/i),
  1075. user = pathname.match(/_by_(\w+)(?:-d\w{6})?\.(?:jpg|bmp|png|gif|swf)/i);
  1076.  
  1077. if (id)
  1078. {
  1079. ControlHQ.data.imgTitle = "Illustration Page";
  1080. ControlHQ.data.imgURL = "http://www.deviantart.com/gallery/#/" + id[1];
  1081. }
  1082.  
  1083. if (user)
  1084. {
  1085. user = user[1].replace("_", "-");
  1086. ControlHQ.data.userName = user;
  1087. ControlHQ.data.userHome = "http://" + user + ".deviantart.com";
  1088. ControlHQ.data.userGallery = "http://" + user + ".deviantart.com/gallery/?catpath=/";
  1089. }
  1090.  
  1091. ControlHQ.createLinkPanel();
  1092. }
  1093. else if (hostname.match(/^(i\.)?imgur.com$/i)) //imgur
  1094. {
  1095. console.info("GIViewer: imgur");
  1096. var id = pathname.match(/\w+/)[0];
  1097.  
  1098. ControlHQ.data.imgTitle = "Image Page";
  1099. ControlHQ.data.imgURL = "http://imgur.com/" + id;
  1100.  
  1101. ControlHQ.createLinkPanel();
  1102. }
  1103. else if (hostname.match(/^pic\d+\.nijie\.info$/i)) //nijie.info
  1104. {
  1105. console.info("GIViewer: nijie.info");
  1106.  
  1107. var user, name = pathname.match(/([\d+|_]+)\.(?:jpg|bmp|png|gif)/i);
  1108. if (!name) return;
  1109. name = name[1];
  1110. //Timestamp appears to be always 14 digits long
  1111. user = name.match(/\d+_(\d+)_(\d+)_\d{14}/); //<count>_<imgID>_<userID>_<time>
  1112. if (user)
  1113. {
  1114. ControlHQ.data.imgTitle = "Illustration Page";
  1115. ControlHQ.data.imgURL = "http://nijie.info/view.php?id=" + user[1];
  1116. user = user[2];
  1117. }
  1118. else
  1119. {
  1120. if (!user) user = name.match(/(\d+)_\d{14}_\d+/); //<userID>_<time>_<count>
  1121. if (!user) user = name.match(/(\d+)_\d{14}/); //<userID>_<time>
  1122. if (!user) user = name.match(/\d{14}(\d+)(?:_\d)?/); //<time><userid> <time><userid>_<num>
  1123. user = user[1];
  1124. }
  1125.  
  1126. if (!user) return;
  1127.  
  1128. ControlHQ.data.userName = "Gallery [" + user + "]";
  1129. ControlHQ.data.userGallery = "http://nijie.info/members_illust.php?id=" + user;
  1130. ControlHQ.data.userHome = "http://nijie.info/members.php?id=" + user;
  1131.  
  1132. ControlHQ.createLinkPanel();
  1133. }
  1134. else if (hostname.match(/^\w+\.nicoseiga\.jp/i)) //Nico Nico Seiga
  1135. {
  1136. console.info("GIViewer: Nico Nico Seiga");
  1137.  
  1138. var id = pathname.match(/\d+$/)[0];
  1139. ControlHQ.data.imgTitle = "Illustration Page";
  1140. ControlHQ.data.imgURL = "http://seiga.nicovideo.jp/seiga/im" + id;
  1141.  
  1142. ControlHQ.createLinkPanel();
  1143. }
  1144. else if (document.URL.match(/https?:\/\/img\.youtube\..+\/vi\//i)) //Nico Nico Seiga
  1145. {
  1146. console.info("GIViewer: Youtube");
  1147.  
  1148. var id = document.URL.match(/\/vi\/([^\/]+)/i)[1];
  1149. ControlHQ.data.imgTitle = "Video Page";
  1150. ControlHQ.data.imgURL = "https://www.youtube.com/watch?v=" + id;
  1151.  
  1152. ControlHQ.createLinkPanel();
  1153. if (pathname.match(/(maxresdefault|hqdefault|\d)\.jpg/i))
  1154. {
  1155. var thumbnails = document.createElement("section");
  1156. thumbnails.id = "YoutubeThumbs";
  1157. document.body.appendChild(thumbnails);
  1158.  
  1159. for (var i = 0, img; i < 3; i++)
  1160. {
  1161. img = document.createElement("img");
  1162.  
  1163. img.src = document.URL.replace(/(maxresdefault|hqdefault|\d)\.jpg/i, i + ".jpg");
  1164. img.style.width = "120px";
  1165. thumbnails.appendChild(img);
  1166. }
  1167. thumbnails.timeoutID = setTimeout(function () { document.getElementById("YoutubeThumbs").style.visibility = "hidden" }, DELAY);
  1168. }
  1169. }
  1170. else ControlHQ.createLinkPanel();
  1171.  
  1172. ControlHQ.addStyles();
  1173.  
  1174. if (!ControlHQ.flash && !ControlHQ.video) window.addEventListener("mousemove", ControlHQ.monitorMouse);
  1175. }
  1176. })();
  1177.  
  1178.  
  1179.  
  1180. /* Helpful information (Reverse image search)
  1181. ********************************************************************************************
  1182. http://saucenao.com/search.php?db=999&url=
  1183. http://www.tineye.com/parse?url=
  1184. http://google.com/searchbyimage?hl=en&site=search&image_url=
  1185. http://imgops.com/<url-without-http>
  1186. http://www.iqdb.org/?url=
  1187.  
  1188.  
  1189. 999 All Databases
  1190. 0 H-Magazines
  1191. 1 H-Anime
  1192. 2 H-Game CG
  1193. 3 DoujinshiDB
  1194. 4 pixiv Images
  1195. 5 Anime
  1196. 6 Nico Nico Seiga
  1197. 7 Danbooru
  1198. 8 drawr Images
  1199. 9 Nijie Images
  1200. 10 yande.re
  1201. TBA...
  1202.  
  1203.  
  1204.  
  1205. https://greasyfork.org/en/forum/discussion/comment/12162/#Comment_12162
  1206. image search on "ascii2d.net"?
  1207.  
  1208.  
  1209. GM_xmlhttpRequest({
  1210. method: 'POST',
  1211. url: 'http://ascii2d.net/imagesearch/search',
  1212. data: 'uri=https://i.imgur.com/RqikjW1.jpg',
  1213. headers: {'Content-Type': 'multipart/form-data'},
  1214. onload: function(r) {
  1215. //parse r.responseText
  1216. }
  1217. });
  1218.  
  1219.  
  1220. ********************************************************************************************/