Advertisement
SirFulgeruL

Offers.JS

May 9th, 2016
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.22 KB | None | 0 0
  1. function showConfirm() {
  2. $("#confirmModal").modal("show");
  3. }
  4.  
  5. function cmd() {
  6. var t = parseInt($("#cmd").html());
  7. if (t > 0) {
  8. $("#cmd").html(t - 1);
  9. setTimeout(cmd, 1000);
  10. }
  11. }
  12.  
  13. function cmdm() {
  14. var t = parseInt($("#cmdm").html());
  15. if (t > 0) {
  16. $("#cmdm").html(t - 1);
  17. setTimeout(cmdm, 1000);
  18. }
  19. }
  20.  
  21.  
  22. function addPadding(lr, across) {
  23. var MIN = 2;
  24. var count = $(lr + " .reals>.placeholder:not(.hidden)").length;
  25. var needed = 0;
  26. if (count <= across * MIN) {
  27. needed = across * MIN - count;
  28. } else {
  29. needed = (across - (count % across)) % across;
  30. }
  31. $(lr + " .bricks>.placeholder").addClass("hidden").slice(0, needed).removeClass("hidden");
  32. }
  33.  
  34. function addUp() {
  35. var creds = 0;
  36. var count = 0;
  37. $("#right .slot").each(function(i, e) {
  38. creds += $(this).data("price");
  39. count++;
  40. });
  41. if (!DEPOSIT) {
  42. creds = -creds;
  43. }
  44. $("#sum").html(formatNum(creds));
  45. if (count == 0) {
  46. $("#botFilter .btn").removeClass("disabled");
  47. }
  48. }
  49.  
  50. function doFilter() {
  51. var b = $("#botFilter .btn.active").data("bot") || 0;
  52. var t = $("#filter").val().toLowerCase();
  53. var total = $("#left .reals>.placeholder").length;
  54. var n = $("#left .reals>.placeholder").addClass("hidden").filter(function(i, e) {
  55. var bx = $(this).data("bot") || "";
  56. var tx = $(this).data("name") || "";
  57. var px = $(this).data("price") || 0;
  58. if (b == 0 || b == bx) {
  59. if (tx.toLowerCase().indexOf(t) >= 0) {
  60. return true;
  61. } else if (t.charAt(0) == ">") {
  62. return px > parseInt(t.substr(1));
  63. } else if (t.charAt(0) == ">") {
  64. return px < parseInt(t.substr(1));
  65. }
  66. }
  67. }).removeClass("hidden").length;
  68. if (t === "" && b == 0) {
  69. $("#left_number").html(total);
  70. } else {
  71. $("#left_number").html(n + "/" + total);
  72. }
  73. addPadding("#left", 6);
  74. }
  75. $(document).ready(function() {
  76. if (DEPOSIT) {
  77. loadLeft();
  78. }
  79. $(document).on("click", "#right .slot", function() {
  80. $(this).parent().remove();
  81. $(this).appendTo(".placeholder[data-pos='" + $(this).data("pos") + "']");
  82. addPadding("#right", 4);
  83. addUp();
  84. });
  85. $(document).on("click", "#left .slot:not(.reject)", function() {
  86. var b = $(this).data("bot") || null;
  87. if (b != null) {
  88. $("#botFilter .btn").removeClass("active").addClass("disabled");
  89. $("#botFilter .btn[data-bot='" + b + "']").addClass("active").removeClass("disabled");
  90. doFilter();
  91. }
  92. var c = $("#right .slot").length;
  93. if (c < 32) {
  94. $("#right .reals").append("<div class='placeholder'></div>");
  95. $(this).appendTo($("#right .reals .placeholder:empty").first());
  96. addPadding("#right", 4);
  97. addUp();
  98. }
  99. });
  100. $("#filter").on("keyup", function() {
  101. doFilter();
  102. });
  103. $("#orderBy").on("change", function() {
  104. var o = $(this).val();
  105. if (o == 1) {
  106. tinysort("#left .reals>.placeholder", {
  107. data: "price",
  108. order: "desc"
  109. });
  110. } else if (o == 2) {
  111. tinysort("#left .reals>.placeholder", {
  112. data: "price",
  113. order: "asc"
  114. });
  115. } else if (o == 3) {
  116. tinysort("#left .reals>.placeholder", {
  117. data: "name",
  118. order: "asc"
  119. });
  120. } else {
  121. tinysort("#left .reals>.placeholder", {
  122. data: "price",
  123. order: "desc"
  124. });
  125. }
  126. });
  127. $("#botFilter .btn").on("click", function() {
  128. if ($(this).hasClass("disabled")) {
  129. return;
  130. }
  131. $("#botFilter .btn").removeClass("active");
  132. $(this).addClass("active");
  133. doFilter();
  134. });
  135. $("#confirmButton").on("click", function() {
  136. inlineAlert("", "Confirming trade offer - please wait...");
  137. $this = $(this);
  138. $this.prop("disabled", true);
  139. var tid = $this.data("tid");
  140. $.ajax({
  141. url: "/confirm",
  142. type: "GET",
  143. data: {
  144. "tid": tid
  145. },
  146. success: function(data) {
  147. console.log(data);
  148. try {
  149. data = JSON.parse(data);
  150. if (data.success) {
  151. if (data.action == "accept") {
  152. inlineAlert("success", data.result);
  153. } else {
  154. inlineAlert("cross", data.result);
  155. }
  156. $("#offerPanel").slideUp();
  157. } else {
  158. inlineAlert("error", data.error);
  159. if (data.count > 0) {
  160. cmdm();
  161. }
  162. }
  163. } catch (err) {
  164. inlineAlert("error", "Javascript error: " + err);
  165. }
  166. },
  167. error: function(err) {
  168. inlineAlert("error", "AJAX error: " + err.statusText);
  169. },
  170. complete: function() {
  171. $this.prop("disabled", false);
  172. }
  173. });
  174. return false;
  175. });
  176. $(document).on("contextmenu", ".slot", function(e) {
  177. if (e.ctrlKey) return;
  178. e.preventDefault();
  179. var view = $(this).data("view");
  180. if (view == "none") {
  181. return;
  182. }
  183. $("#contextMenu [data-act=0]").attr("href", view);
  184. var $menu = $("#contextMenu");
  185. $menu.show().css({
  186. position: "absolute",
  187. left: getMenuPosition(e.clientX, 'width', 'scrollLeft'),
  188. top: getMenuPosition(e.clientY, 'height', 'scrollTop')
  189. }).off("click").on("click", "a", function(e) {});
  190. });
  191. $(document).on("click", function() {
  192. $("#contextMenu").hide();
  193. });
  194. });
  195.  
  196. function getMenuPosition(mouse, direction, scrollDir) {
  197. var win = $(window)[direction](),
  198. scroll = $(window)[scrollDir](),
  199. menu = $("#contextMenu")[direction](),
  200. position = mouse + scroll;
  201. if (mouse + menu > win && menu < mouse)
  202. position -= menu;
  203. return position;
  204.  
  205. }
  206.  
  207. function showPending(data) {
  208. var content = "<b>Trade with " + data.bot + " ";
  209. content += "- The secret code is: " + data.code + " and you will get " + data.amount + " coins.";
  210. content += " Click <a href='https://steamcommunity.com/tradeoffer/" + data.tid + "' target='_blank' >here</a> to accept trade offer";
  211. if (data.amount > 0) {
  212. content += " and get coins.";
  213. } else {
  214. content += ".";
  215. }
  216. $("#offerContent").html(content);
  217. $("#confirmButton").data("tid", data.tid);
  218. if (data.amount < 0) {
  219. if (data.state == 2 || data.state == 3 || data.state == 4 || data.state == 9) {
  220. $("#confirmButton").html("Confirm");
  221. } else {
  222. $("#confirmButton").html("Confirmed");
  223. }
  224. }
  225. $("#offerPanel").slideDown();
  226. }
  227.  
  228. function loadLeft(opts) {
  229.  
  230. inlineAlert("", "Loading your inventory - please wait...");
  231. var DIV = "<div class='placeholder matched' data-name='{0}' data-pos='{1}' data-price='{2}' data-bot='{3}'>";
  232. DIV += "<div class='slot {13}' data-view='{15}' data-name='{4}' data-pos='{5}' data-price='{6}' data-bot='{7}' data-id='{8}' style='background-image:url(\"{9}\")'>";
  233. DIV += "<div class='name'>{10}</div>";
  234. DIV += "<div class='price {11}'>{12}</div>";
  235. DIV += "<div class='bot'>{14}</div>";
  236. DIV += "</div></div>";
  237. var IMG = "{0}/{1}fx{2}f";
  238. var url = "";
  239. if (DEPOSIT) {
  240. url = "/get_inv?" + opts;
  241. } else {
  242. var g = grecaptcha.getResponse();
  243. url = "/get_bank_safe?g-recaptcha-response=" + g;
  244. }
  245. $.ajax({
  246. "url": url,
  247. success: function(data) {
  248. try {
  249. data = JSON.parse(data);
  250. if (data.success) {
  251. console.log(data);
  252.  
  253. $("#left .reals").empty();
  254. $("#right .reals").empty();
  255. $("#right .bricks").removeClass("hidden");
  256. $("#avail").html(formatNum(data.balance));
  257. var count = data.items.length;
  258. var eleA = [];
  259. for (var i = 0; i < count; i++) {
  260. var item = data.items[i];
  261. var url = IMG.format(item.img, 110, 50);
  262. var price_class = "ball-1";
  263. if (DEPOSIT) {
  264. price_class = "ball-0";
  265. }
  266. var slot_class = "";
  267. var price_content = item.price;
  268. if (price_content == 0) {
  269. price_content = item.reject;
  270. slot_class = "reject";
  271. } else {
  272. price_content = formatNum(price_content);
  273. }
  274. bot = 0;
  275. if (item.botid) {
  276. bot = item.botid;
  277. }
  278. var botLabel = "";
  279. if (!DEPOSIT) {
  280.  
  281. botLabel = "Bot " + bot;
  282. }
  283. var ele = DIV.format(item.name, i, item.price, bot, item.name, i, item.price, bot, item.assetid, url, item.name, price_class, price_content, slot_class, botLabel, item.view);
  284. eleA.push(ele);
  285. }
  286. $("#left_number").html(count);
  287. document.getElementById("left").getElementsByClassName("reals")[0].innerHTML = eleA.join('');
  288. addPadding("#left", 6);
  289. if (data.fromcache) {
  290. inlineAlert("success", "Loaded " + count + " items from cache - <a href=\"javascript:loadLeft('nocache')\">reload inventory</a>");
  291. } else {
  292. inlineAlert("success", "Loaded " + count + " items.");
  293. }
  294. } else {
  295. inlineAlert("error", data.error);
  296. if (data.count > 0) {
  297. cmd();
  298. }
  299. }
  300. if (data.tid) {
  301. showPending(data);
  302. }
  303. } catch (err) {
  304. inlineAlert("error", "Javascript error: " + err);
  305. console.log(err.stack);
  306. }
  307. },
  308. error: function(err) {
  309. inlineAlert("error", "AJAX error: " + err.statusText);
  310. },
  311. });
  312. }
  313.  
  314. function offer() {
  315. inlineAlert("", "Processing trade offer - please wait...");
  316. $("#confirmModal").modal("hide");
  317. var csv = "";
  318. var sum = 0;
  319. $("#right .slot").each(function(i, e) {
  320. csv += $(this).data("id") + ",";
  321. sum += $(this).data("price");
  322. });
  323. var turl = $("#tradeurl").val();
  324. var remember = $("#remember").is(":checked") ? "on" : "off";
  325. var url = "/withdraw_js";
  326. if (DEPOSIT) {
  327. url = "/deposit_js";
  328. }
  329. $.ajax({
  330. "url": url,
  331. type: "GET",
  332. data: {
  333. "assetids": csv,
  334. "tradeurl": turl,
  335. "checksum": sum,
  336. "remember": remember
  337. },
  338. success: function(data) {
  339. console.log(data);
  340. try {
  341. data = JSON.parse(data);
  342. if (data.success) {
  343. inlineAlert("success", "New trade offer!");
  344. showPending(data);
  345. } else {
  346. inlineAlert("error", data.error);
  347. }
  348. } catch (err) {
  349. inlineAlert("error", "Javascript error: " + err);
  350. }
  351. },
  352. error: function(err) {
  353. inlineAlert("error", "AJAX error: " + err.statusText);
  354. },
  355. });
  356. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement