Advertisement
Guest User

Untitled

a guest
Feb 9th, 2019
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 132.86 KB | None | 0 0
  1. $(document).ready(function(){
  2.  
  3. document.getElementById('canvas').onmousedown = function() { return false; } //so page is unselectable
  4.  
  5. var canvas = $("canvas")[0];
  6. var chatWindow = document.getElementById('chat-window');
  7. var sitechatWindow = document.getElementById('chat-window-2');
  8. var chatText = document.getElementById('chat-message-text');
  9. var chatInput = document.getElementById('message');
  10. var ctx = document.getElementById("canvas").getContext("2d");
  11. var w,h,mx, my;
  12. var gamemode = 0;
  13. var gamemodeLists = ["canvas","gamemode1","gamemode2"];
  14. var keepTrackScroll = 0;
  15. window.AudioContext = window.AudioContext || window.webkitAudioContext;
  16. ctx.imageSmoothingEnabled= false
  17. var canvasSettings = function(){
  18. var useWidth = (checkMobile())?screen.width:window.innerWidth;
  19. var useHeight = (checkMobile())?screen.height:window.innerHeight;
  20. canvas.width = $("#canvas").width();
  21. canvas.height = $("#canvas").height();
  22. w = canvas.width;
  23. h = canvas.height;
  24. }
  25. document.getElementById("emojilist").addEventListener("click", function() {
  26. $(function() {
  27. $(".menu").slideToggle(1);
  28. });
  29. })
  30. canvasSettings();
  31. window.escapeHtml = function(unsafe) {
  32. return unsafe
  33. .replace(/&/g, "&")
  34. .replace(/</g, "&lt;")
  35. .replace(/>/g, "&gt;")
  36. .replace(/"/g, "&quot;")
  37. .replace(/'/g, "&#039;");
  38. }
  39. var socket = window.socket = io();
  40. window.handleWindowMute = function(v){
  41. return Math.min(sfxMute?0:1,v);
  42. }
  43.  
  44. function getJsonFromUrl() {
  45. var query = location.search.substr(1);
  46. var result = {};
  47. query.split("&").forEach(function(part) {
  48. var item = part.split("=");
  49. result[item[0]] = decodeURIComponent(item[1]);
  50. });
  51. return result;
  52. }
  53.  
  54. if("referral" in getJsonFromUrl()){
  55. $("#signup-ref").val(getJsonFromUrl()["referral"]);
  56. $("#signup-ref").prop('disabled', true);
  57. }
  58. if("r" in getJsonFromUrl()){
  59. $("#signup-ref").val(getJsonFromUrl()["r"]);
  60. $("#signup-ref").prop('disabled', true);
  61. }
  62.  
  63. document.getElementById('login-submit').addEventListener("click", function(evt){
  64. var loo = {username:document.getElementById('login-user').value,password:document.getElementById('login-pw').value};
  65. socket.emit("signin",loo);
  66. document.getElementById('login-submit').style.display = 'none';
  67. });
  68.  
  69. document.getElementById('withdraw-submit').addEventListener("click", function(evt){
  70. socket.emit("checkMule",document.getElementById('withdraw-user').value,document.getElementById('withdraw-pw').value);
  71. document.getElementById('withdraw-prompt').style.display = 'none';
  72. document.getElementById('withdraw-wait').style.display = 'block';
  73. });
  74.  
  75. document.getElementById('cancel_withdrawal').addEventListener("click", function(evt){
  76. socket.emit("cancel_withdrawal");
  77. document.getElementById('remove-withdrawal').style.display = 'none';
  78. });
  79.  
  80. document.getElementById('whubtoins').addEventListener("click", function(evt){
  81. socket.emit("getPossibleMules");
  82. document.getElementById('withdraw_mules_listed').innerHTML = iwpage(0);
  83. window.onlyOpenOneWindow('withdraw_mules');
  84. });
  85.  
  86. document.getElementById('whubtoreg').addEventListener("click", function(evt){
  87. window.onlyOpenOneWindow("withdraw-window");
  88. });
  89.  
  90. document.getElementById('signup-submit').addEventListener("click", function(evt){
  91. socket.emit("signup",document.getElementById('signup-user').value,document.getElementById('signup-pw').value,document.getElementById('signup-ref').value);
  92. });
  93.  
  94. document.getElementById('verify-code-button').addEventListener("click", function(evt){
  95. if(document.getElementById('verify-IGN').value.length==0){
  96. document.getElementById('verify-error').style.color = "#ff9999";
  97. document.getElementById('verify-error').innerHTML = "Please enter an IGN.";
  98. }else{
  99. socket.emit('verificationCode',document.getElementById('verify-IGN').value);
  100. }
  101. });
  102. document.getElementById('verify-code-button-recover').addEventListener("click", function(evt){
  103. if(document.getElementById('verify-IGN-recover').value.length==0){
  104. document.getElementById('verify-error-recover').style.color = "#ff9999";
  105. document.getElementById('verify-error-recover').innerHTML = "Please enter an IGN.";
  106. }else{
  107. socket.emit('verificationCodeRECOVER',document.getElementById('verify-IGN-recover').value);
  108. }
  109. });
  110.  
  111. document.getElementById('verify-acc-button').addEventListener("click", function(evt){socket.emit('verifyCode');document.getElementById("verification-error").innerHTML=""});
  112. document.getElementById('verify-acc-button-recover').addEventListener("click", function(evt){
  113. if(document.getElementById('recover-pw').value != document.getElementById('recover-pw-confirm').value){
  114. document.getElementById('verification-error-recover').style.color = "#ff9999";
  115. document.getElementById('verification-error-recover').innerHTML = "The passwords do not match!";
  116. }else{
  117. document.getElementById('verification-error-recover').innerHTML = "";
  118. socket.emit('verifyCodeRECOVER',document.getElementById('verify-IGN-recover').value,document.getElementById('recover-pw').value);
  119. }
  120. }
  121. );
  122. document.getElementById('redeem-code-button').addEventListener("click", function(evt){socket.emit('redeemCode',document.getElementById('redeemable-code').value);});
  123. document.getElementById('login-from-signup').addEventListener("click", function(evt){window.onlyOpenOneWindow("login-prompt");});
  124. document.getElementById('signup-from-login').addEventListener("click", function(evt){window.onlyOpenOneWindow("signup-prompt");});
  125. document.getElementById('recover-account-from-login').addEventListener("click", function(evt){window.onlyOpenOneWindow("verify-code-recover");});
  126.  
  127. document.getElementById('changepw-button').addEventListener("click", function(evt){
  128. if(document.getElementById('change-pw').value == document.getElementById('change-pw2').value && document.getElementById('change-pw').value.length >= 8){
  129. socket.emit('change_password',document.getElementById('current-pw').value,document.getElementById('change-pw').value);
  130. document.getElementById('changepw-button').style.display = 'none';
  131. }else{
  132. document.getElementById('changepw-error').style.color = '#ff0000';
  133. document.getElementById('changepw-error').innerHTML = 'Please check your passwords again.';
  134. }
  135. });
  136.  
  137. document.getElementById('make-mule-button').addEventListener("click", function(evt){
  138. socket.emit('makemule');
  139. document.getElementById("make-mule-button").style.display = 'none';
  140. document.getElementById("freekk-reply").innerHTML = 'Hold on... Making a new captcha for you.';
  141. });
  142.  
  143. document.getElementById('submit-mule-button').addEventListener("click", function(evt){
  144. socket.emit('submitmule');
  145. document.getElementById("submit-mule-button").style.display = 'none';
  146. document.getElementById("freekk-reply2").innerHTML = 'Hold on... Verifying it.';
  147. });
  148.  
  149. document.getElementById('make-deposit-button').addEventListener("click", function(evt){
  150. socket.emit('deposit_get');
  151. document.getElementById("make-deposit-button").style.display = 'none';
  152. document.getElementById("deposit-waiter").style.display = 'none';
  153. document.getElementById("deposit_creds").style.display = 'block';
  154. document.getElementById("deposit_creds").innerHTML = 'We are getting you a mule... you must complete your deposit!';
  155. });
  156.  
  157. document.getElementById('submit-deposit-button').addEventListener("click", function(evt){
  158. socket.emit('deposit_submit');
  159. document.getElementById("submit-deposit-button").style.display = 'none';
  160. document.getElementById("report-deposit-button").style.display = 'none';
  161. document.getElementById("deposit-waiter").style.display = 'none';
  162. document.getElementById("deposit_creds").style.display = "none";
  163. document.getElementById("deposit-reply").style.display = 'block';
  164. document.getElementById("deposit-reply").style.color = '#ffffff';
  165. document.getElementById("deposit-reply").innerHTML = 'We are checking the mule... if this takes longer than a minute, refresh the browser and try again.';
  166. });
  167.  
  168. document.getElementById('report-deposit-button').addEventListener("click", function(evt){
  169. socket.emit('deposit_report');
  170. document.getElementById("submit-deposit-button").style.display = 'none';
  171. document.getElementById("report-deposit-button").style.display = 'none';
  172. document.getElementById("deposit-waiter").style.display = 'none';
  173. document.getElementById("deposit_creds").style.display = "none";
  174. document.getElementById("deposit-reply").style.display = 'block';
  175. document.getElementById("deposit-reply").style.color = '#ffffff';
  176. document.getElementById("deposit-reply").innerHTML = 'We are checking if the mule is broken...';
  177. });
  178.  
  179. document.getElementById('game-submit').addEventListener("click", function(evt){
  180. if(gamemode == 2){
  181. if(round.loggedin){
  182. if($("#lobbymenu1v1").css('visibility') == 'visible'){
  183. $("#create-1v1-room").css('display','block');
  184. window.onresize();
  185. }else if($("#watch1v1game").css('visibility') == 'visible'){
  186. $(".lobby1v1room[roomid='"+ $("#watch1v1game").attr('roomid') +"']").children(".room1v1joinroom").click();
  187. window.onresize();
  188. }
  189. }
  190. }else{
  191. var temp = [];
  192. $( '.offer-i' ).each(function(){
  193. temp.push(parseInt($(this).attr('itemid')));
  194. $(this).remove();
  195. });
  196. $("#offer_inv_worth").attr('val',0);
  197. $("#offer_inv_worth").html("<span>WAGER</span><span style='float: right;color:#f70;'>0F</span>")
  198. $("#game-submit").addClass('ending');
  199. $("#game-submit").removeClass('has-items');
  200. if(gamemode == 0)socket.emit('wager',temp);
  201. else if(gamemode == 1)socket.emit('wager2',temp);
  202. }
  203.  
  204. });
  205.  
  206. document.getElementById('Tos-accept').addEventListener("click", function(evt){
  207. window.onlyOpenOneWindow('information-signup-window');
  208. });
  209.  
  210. window.acceptTOS = function(){
  211. document.getElementById('Tos-accept').style.display='none';
  212. document.getElementById('signup-submit').style.display='block';
  213. if("username" in localStorage)document.getElementById("signup-error").outerHTML = "<div class='signup-warning'>WARNING: It looks like you already have an OryxJackpot account, Making another account will get you permanently banned! You have been warned.</div>" + document.getElementById("signup-error").outerHTML;
  214. window.onlyOpenOneWindow('signup-prompt');
  215. }
  216.  
  217. document.getElementById('new-settings').addEventListener("click", function(evt){window.onlyOpenOneWindow("new-settings-menu");});
  218. document.getElementById('settings_deposit').addEventListener("click", function(evt){window.onlyOpenOneWindow("new-deposit");});
  219. document.getElementById('settings_withdraw').addEventListener("click", function(evt){window.onlyOpenOneWindow("whub");});
  220. document.getElementById('settings_redeem_code').addEventListener("click", function(evt){window.onlyOpenOneWindow("redeem-code");});
  221. document.getElementById('settings_free').addEventListener("click", function(evt){window.onlyOpenOneWindow("get-free-kk");});
  222. document.getElementById('sidebar_KK_SHOP').addEventListener("click", function(evt){
  223. window.onlyOpenOneWindow('test-kk-shop');
  224. socket.emit('getPackages');
  225. });
  226.  
  227. document.getElementById('chat-to-player').addEventListener("click", function(evt){
  228. chatWindow.style.display = "block";
  229. sitechatWindow.style.display = "none";
  230. });
  231. document.getElementById('chat-to-site').addEventListener("click", function(evt){
  232. chatWindow.style.display = "none";
  233. sitechatWindow.style.display = "block";
  234. sitechatWindow.scrollTop = sitechatWindow.scrollHeight;
  235. });
  236. document.getElementById('switch-gamemodes').addEventListener("click", function(evt){
  237. gamemode++;
  238. if(gamemode==3)gamemode=0;
  239. wagerscroll.offsety = 0;
  240. document.getElementById('switch-gamemodes-notif').style.display = "none";
  241. for(var x in gamemodeLists){
  242. if(x == gamemode) $("#"+gamemodeLists[x]).css('visibility','visible');
  243. else $("#"+gamemodeLists[x]).css('visibility','hidden');
  244. }
  245. if((gamemode==0 && !round.rollwin)||(gamemode==1 && !round2.rollwin))$("#game-submit").removeClass('ending');
  246. if(gamemode!=2){
  247. $("#game-submit").addClass('ending');
  248. $("#offer_inv").css('display','block');
  249. $("#offer_inv_worth").css('display','block');
  250. $("#game-submit").html('Wager');
  251. $("#watch1v1game").css('visibility','hidden');
  252. $("#lobbymenu1v1").removeAttr('style');
  253. }else{
  254. $("#offer_inv").css('display','none');
  255. $("#offer_inv_worth").css('display','none');
  256. $("#game-submit").html('Create');
  257. }
  258. });
  259.  
  260. var sfxMute = false;
  261. if(!localStorage.getItem("mute")){
  262. localStorage.setItem("mute",false)
  263. }else{
  264. sfxMute = localStorage.getItem("mute")=='true';
  265. document.getElementById('settings_mute').style.backgroundImage = sfxMute?"url(client/resources/buttons/sfxOff.png)":"url(client/resources/buttons/sfxOn.png)";
  266. }
  267. document.getElementById('settings_mute').addEventListener("click", function(evt){
  268. sfxMute = !sfxMute;
  269. localStorage.setItem("mute",sfxMute)
  270. document.getElementById('settings_mute').style.backgroundImage = sfxMute?"url(client/resources/buttons/sfxOff.png)":"url(client/resources/buttons/sfxOn.png)";
  271. });
  272. document.getElementById('settings_challenges').addEventListener("click", function(evt){
  273. window.onlyOpenOneWindow('giveaway_window');
  274. });
  275.  
  276. document.getElementById('settings_profile').addEventListener("click", function(evt){
  277. socket.emit('stats_get');
  278. socket.emit('refer_get');
  279. socket.emit('images_get');
  280. $("#change_picture_result").css('display','none');
  281. window.onlyOpenOneWindow("profile_overview");
  282. });
  283.  
  284. socket.on('stats_reply',function(stats){
  285. var prepareHTML = ""
  286. prepareHTML += "Total Wagered: <span style='color:#ff8800'>" + stats.total_wagered + "F</span> over <span style='color:#11ffff'>" + stats.total_wagers + "</span> rounds.<br>"
  287. prepareHTML += "Total Won: <span style='color:#ff8800'>" + stats.total_won + "F</span> over <span style='color:#11ffff'>" + stats.total_wins+"</span> wins.<br>"
  288. prepareHTML += "Luckiest win: <span style='color:#ff8800'>" + stats.luckiest_win[0] + "F</span> with <span style='color:#ffff22'>" + stats.luckiest_win[1].toFixed(2) + "%</span> chance.<br>"
  289. prepareHTML += "Biggest win: <span style='color:#ff8800'>" + stats.biggest_won + "F</span><br><br>"
  290.  
  291. var netprofit = stats.total_won - stats.total_wagered;
  292. prepareHTML += "Net Profit: <span style='color:" + (netprofit>0?"#22ff22":"#ff2222") + "'>" + netprofit + "F</span><br>"
  293.  
  294. if(stats.total_wagers == 0){
  295. prepareHTML += "Win rate: <span style='color:#ffffff'> You have not played yet.</span>"
  296. }else{
  297. var winrate = (stats.total_wins/stats.total_wagers * 100).toFixed(2);
  298. prepareHTML += "Win rate: <span style='color:#ffffff'>" + winrate + "%</span>"
  299. }
  300. document.getElementById('gambling_info').innerHTML = prepareHTML;
  301. document.getElementById('information-referred-KK').innerHTML = "Earned so far: " + stats.referredKK + "KK"
  302. })
  303.  
  304. socket.on('rank_reply',function(curr_rank,curr_rank_time,future_ranks){
  305. future_ranks.unshift({rank:curr_rank,ranktimer:curr_rank_time});
  306. document.getElementById('rank_info').innerHTML = ""
  307. if(future_ranks.length == 1 && future_ranks[0].rank == 0){
  308. document.getElementById('rank_info').innerHTML = "<div class='profile_header'>You have no ranks.<br><div style='font-size:20px'>You can buy one by clicking KK shop on the sidebar.</div></div>"
  309. }else{
  310. display_ranks(future_ranks)
  311. if(future_ranks.length > 0)document.getElementById('order_ranks').style.display = 'block';
  312. }
  313. })
  314.  
  315. function display_ranks(rankQ){
  316. for(var i = 0; i < rankQ.length; i++){
  317. var prepareHTML = "<div class='prof-overview-rankcontain'>"
  318. prepareHTML += "<div class='prof-overview-rankcontainL1'>"
  319. prepareHTML += '<span style="color:'+siteranks[rankQ[i].rank].namecolor+'">' + siteranks[rankQ[i].rank].title + ' Rank</span><br>'
  320. prepareHTML += '<img class="prof-overview-rankpic" src="'+ window.escapeHtml( siteranks[rankQ[i].rank].name ) +'">'
  321. prepareHTML += "</div>"
  322. prepareHTML += "<div class='prof-overview-rankcontainL2'>"
  323. if(i == 0){
  324. prepareHTML += 'Current Rank<br>Time left: ' + (minutesToMsg(rankQ[i].ranktimer - Date.now()) == "now"?'Expires on logout!':minutesToMsg(rankQ[i].ranktimer - Date.now()) + ".");
  325. }else{
  326. prepareHTML += 'Next Rank<br>Duration: ' + minutesToMsg(rankQ[i].ranktimer) + "."
  327. }
  328. prepareHTML += "</div>"
  329. prepareHTML += "</div>"
  330. document.getElementById('rank_info').innerHTML += prepareHTML;
  331. }
  332. }
  333.  
  334. document.getElementById('order_ranks').addEventListener("click", function(evt){
  335. document.getElementById('order_ranks').style.display = 'none';
  336. socket.emit("orderRanks");
  337. });
  338.  
  339. socket.on('rank_update',function(ranksQ){
  340. ranksQ[0].ranktimer += Date.now()
  341. document.getElementById('rank_info').innerHTML = "";
  342. display_ranks(ranksQ)
  343. });
  344.  
  345. document.getElementById('new-logout').addEventListener("click", function(evt){
  346. socket.emit("logout");
  347. document.getElementById('withdraw-submit').style.display = 'block';
  348. });
  349.  
  350. document.getElementById('image_reroller').addEventListener("click", function(){
  351. socket.emit('changeImage');
  352. });
  353. socket.on('image_reply',function(msg,error){
  354. document.getElementById('image_reply').style.color = error?"#00ff00":"#ff0000";
  355. document.getElementById('image_reply').innerHTML = "<br><br>"+msg;
  356. });
  357. $('#iw-sort-by').change(function(){
  358. sortCachedMules();
  359. $('#withdraw_mules_listed').html(iwpage(1));
  360. });
  361.  
  362. function sortCachedMules(){
  363. var selectedOpt = parseInt(document.getElementById('iw-sort-by').options[document.getElementById('iw-sort-by').selectedIndex].value);
  364. if(selectedOpt > 0){
  365. if(selectedOpt==1)cachedMules.filtered.sort(function(a,b){return b.sortby.il - a.sortby.il});
  366. else if(selectedOpt==2)cachedMules.filtered.sort(function(a,b){return a.sortby.il - b.sortby.il});
  367. else if(selectedOpt==3)cachedMules.filtered.sort(function(a,b){return b.sortby.F - a.sortby.F});
  368. else if(selectedOpt==4)cachedMules.filtered.sort(function(a,b){return a.sortby.F - b.sortby.F});
  369. }
  370. }
  371. function filterCachedMules(){
  372. Wfilter = document.getElementById('withdrawSearch').value.toUpperCase().split(",");
  373. cachedMules.filtered = [];
  374. for(var x in cachedMules.cache){
  375. var count = 0;
  376. for(var name in Wfilter){
  377. for(var y in cachedMules.cache[x].items){
  378. if(items[window.id_to_pos(cachedMules.cache[x].items[y])].name.toUpperCase().indexOf($.trim(Wfilter[name])) != -1){
  379. count++;
  380. break;
  381. }
  382. }
  383. }
  384. if(count == Wfilter.length){
  385. cachedMules.filtered.push(cachedMules.cache[x]);
  386. }
  387. }
  388. }
  389.  
  390. document.getElementById('new-login').addEventListener("click", function(evt){
  391. $("#login-error").html("");
  392. window.onlyOpenOneWindow("login-prompt");
  393. document.getElementById('LoginAvatar').src = $("#sidebar_img").attr('src');
  394. });
  395.  
  396. document.getElementById('verify-code-go-back').addEventListener("click", function(evt){
  397. document.getElementById('verifyStep2').style.display='none';
  398. document.getElementById('verifyStep1').style.display='block';
  399. document.getElementById('verify-code-go-back').style.display='none';
  400. window.onresize();
  401. });
  402. document.getElementById('verify-recover-code-go-back').addEventListener("click", function(evt){
  403. document.getElementById('verifyStep2-recover').style.display='none';
  404. document.getElementById('verifyStep1-recover').style.display='block';
  405. document.getElementById('verify-recover-code-go-back').style.display='none';
  406. window.onresize();
  407. });
  408.  
  409. document.getElementById('inv-filter').addEventListener("click", function(evt){
  410. myInv.filtered = !myInv.filtered;
  411. document.getElementById('inv-filter').src = myInv.filtered?"/client/resources/buttons/dontfilter.png":"/client/resources/buttons/filter.png";
  412. myInv.offseth = 0;
  413.  
  414. if(myInv.filtered){
  415. $( '.zero-stock' ).each(function(){
  416. $(this).css('display','none');
  417. });
  418. }else{
  419. $( '.zero-stock' ).each(function(){
  420. $(this).css('display','inline-block');
  421. });
  422. }
  423. keepTrackScroll = 0;
  424. });
  425.  
  426. document.getElementById('inv-resize').addEventListener("click", function(evt){
  427. var oldResize = myInv.resize;
  428.  
  429. myInv.resize = (myInv.resize%3)+1
  430. items_config.row = 2*(myInv.resize+1);
  431. items_config.col = 1 + myInv.resize;
  432.  
  433. //experimental
  434. keepTrackScroll = Math.round(keepTrackScroll*(2*(oldResize+1))/(2*(myInv.resize+1)));
  435. $(".inv-i").css('width',100/(2*(myInv.resize+1)) + "%");
  436. $(".inv-i").css('height',100/(1 + myInv.resize) + "%");
  437. if(window.innerHeight >= window.innerWidth){
  438. $(".inv-i").css('font-size',5*(1/(1 + myInv.resize)) + "vw");
  439. $('#sidebar_inv').scrollTop(keepTrackScroll*window.innerWidth*0.14/(1 + myInv.resize))
  440. }else{
  441. $(".inv-i").css('font-size',5*(1/(1 + myInv.resize)) + "vh");
  442. $('#sidebar_inv').scrollTop(keepTrackScroll*window.innerHeight*0.135/(1 + myInv.resize))
  443. }
  444. })
  445.  
  446. $('button').on('click',function(e){
  447. $(this).blur()
  448. });
  449. $('input').on('click',function(e){
  450. if($(this).attr("type") == "image")$(this).blur()
  451. });
  452. $('#profile-overview-right').on('click',function(e){
  453. var iterateTemp = document.getElementsByClassName('profile_overview-main-container');
  454. for(var i = 0; i < iterateTemp.length; i++){
  455. if(iterateTemp[i].style.left == "0%"){
  456. var getThisID = iterateTemp[i].getAttribute('id');
  457. var targetID = iterateTemp[(i+1)%iterateTemp.length].getAttribute('id');
  458. $("#"+targetID).css({left:"100%"});
  459. $("#"+targetID).animate({left:"0%"},400);
  460. $("#"+getThisID).animate({left:"-100%"},400);
  461. break;
  462. }
  463. }
  464. })
  465. $('#profile-overview-left').on('click',function(e){
  466. var iterateTemp = document.getElementsByClassName('profile_overview-main-container');
  467. for(var i = 0; i < iterateTemp.length; i++){
  468. if(iterateTemp[i].style.left == "0%"){
  469. var getThisID = iterateTemp[i].getAttribute('id');
  470. var targetID = iterateTemp[((i-1) + iterateTemp.length)%iterateTemp.length].getAttribute('id');
  471. $("#"+targetID).css({left:"-100%"});
  472. $("#"+targetID).animate({left:"0%"},400);
  473. $("#"+getThisID).animate({left:"100%"},400);
  474. break;
  475. }
  476. }
  477. })
  478.  
  479. socket.on('verificationCode',function(msg,code){
  480. if(code === null){
  481. document.getElementById('verify-error').style.color = "#ff9999";
  482. document.getElementById('verify-error').innerHTML = msg;
  483. }else{
  484. document.getElementById('verifyStep1').style.display = "none";
  485. document.getElementById('verifyStep2').style.display = "block";
  486. document.getElementById('verification-pretense').innerHTML = "Your RealmEye code is<br><input type='text' readonly='readonly' class='copy-paste-field' value='"+code+"'/>";
  487. document.getElementById('verify-error').style.color = "#99ff99";
  488. document.getElementById('verify-error').innerHTML = "Code successfully generated.";
  489. document.getElementById('verify-code-go-back').style.display = 'block';
  490. window.onresize();
  491. }
  492.  
  493. });
  494. socket.on('verificationResponse',function(msg,doneBool){
  495. document.getElementById('verification-error').style.color = "#ff9999";
  496. document.getElementById('verification-error').innerHTML = msg;
  497. });
  498.  
  499.  
  500.  
  501. socket.on('verificationCodeRECOVER',function(msg,doneBool){
  502. if(!doneBool){
  503. document.getElementById('verify-error-recover').style.color = "#ff9999";
  504. document.getElementById('verify-error-recover').innerHTML = msg;
  505. }else{
  506. document.getElementById('verifyStep1-recover').style.display = "none";
  507. document.getElementById('verifyStep2-recover').style.display = "block";
  508. document.getElementById('verification-pretense-recover').innerHTML = "Your RealmEye code is<br><input type='text' readonly='readonly' class='copy-paste-field' value='"+msg+"'/>";
  509. document.getElementById('verify-error-recover').style.color = "#99ff99";
  510. document.getElementById('verify-error-recover').innerHTML = "Code successfully generated.";
  511. document.getElementById('verify-recover-code-go-back').style.display='block';
  512. window.onresize();
  513. }
  514. });
  515. socket.on('verificationResponseRECOVER',function(msg,doneBool){
  516. document.getElementById('verification-error-recover').style.color = doneBool?"#99ff99":"#ff9999";
  517. document.getElementById('verification-error-recover').innerHTML = msg;
  518. });
  519.  
  520. $( 'div' ).on("click",".copy-paste-field",function(){
  521. $(this).focus();
  522. $(this).select();
  523. });
  524.  
  525.  
  526. var EDITBOXES = [];
  527. window.items = items = [];
  528. var items_config = {row:4,col:2};
  529. var wageroptions = {worth:0,x:0,y:0,w:0,h:0}
  530.  
  531. socket.on('you',function(xx){
  532. if(round.name != xx.username)socket.emit("1V1getRooms"); //username change
  533.  
  534. round.name = xx.username;
  535. $("#sidebar_name").html(xx.username);
  536. var tsize = Math.min(6.6,22/(xx.username.length-1) + 0.2)
  537. $("#sidebar_name_contain").css('font-size', tsize + "vh");
  538. $("#sidebar_name_contain").css('line-height',tsize*0.75 + "vh");
  539. round.rank = xx.rank;
  540. round.rotmg = xx.rotmg;
  541. $("#sidebar_img").attr('src',xx.img);
  542. round.loggedin = xx.log;
  543. if(round.loggedin == true){
  544. localStorage.username = xx.username;
  545. }else{
  546. $( '.offer-i' ).each(function(){
  547. $(this).remove();
  548. });
  549. $("#offer_inv_worth").attr('val',0);
  550. $("#offer_inv_worth").html("<span>WAGER</span><span style='float: right;color:#f70;'>0F</span>");
  551. $("#game-submit").removeClass('has-items');
  552. }
  553. round.isAdmin = xx.isAdmin;
  554. myInv.KK = xx.KK;
  555. myInv.referred = xx.referred;
  556. if(!round.loggedin){
  557. chatInput.placeholder = "Login to chat";
  558. chatInput.disabled = "disabled";
  559. }else if(round.loggedin){
  560. chatInput.maxlength = "130";
  561. chatInput.placeholder= "Chat here (English)"
  562. chatInput.removeAttribute("disabled");
  563. }
  564. document.getElementById("new-login").style.display = (round.loggedin) ? 'none':'block';
  565. document.getElementById("new-logout").style.display = (!round.loggedin) ? 'none':'block';
  566. //document.getElementById("new-kk-shop").style.display = (!round.loggedin) ? 'none':'block';
  567. document.getElementById("new-settings").style.display = (!round.loggedin) ? 'none':'block';
  568. document.getElementById("settings_challenges").style.display = (!round.loggedin) ? 'none':'block';
  569. document.getElementById("sidebar_KK").style.display = (!round.loggedin) ? 'none':'block';
  570. document.getElementById("sidebar_KK_SHOP").style.display = (!round.loggedin) ? 'none':'block';
  571. document.getElementById("test-kk-shop-kk").innerHTML = myInv.KK + "KK";
  572. document.getElementById("sidebar_KK").innerHTML = myInv.KK + "KK";
  573. document.getElementById('test-kk-shop-stage2-KK-msg').innerHTML = "You have " + myInv.KK + "KK to spend."
  574.  
  575. var prepareHTML = "<div id='profile-overview-pic' style='background-image:url(\""+xx.img+"\")'></div>"
  576. if(xx.rotmg != "guest")prepareHTML += "<div>Username: " + window.escapeHtml(xx.username) +"<br>"
  577. else prepareHTML += "<div>You are a guest<br>"
  578. if(xx.rotmg == "unverified")prepareHTML += "RotMG IGN: <button type='button' class='new-menu-button quint-invis' id='click_to_verify'>Unverified! Click to verify!</button><br>";
  579. else if(xx.rotmg != "guest")prepareHTML += "RotMG IGN: <span id='rotmg_reveal'><button type='button' class='new-menu-button quint-invis' id='click_to_reveal'>Click to Reveal</button></span><br>"
  580. prepareHTML += "<span style='color:#ffff00'>KK: " + xx.KK + "</span><br><br></div>"
  581. prepareHTML += "<button type='button' class='new-menu-button quint-invis' id='go_to_change_pw'>Change Password</button>"
  582.  
  583. document.getElementById("quint_info").innerHTML = prepareHTML
  584.  
  585. document.getElementById('go_to_change_pw').addEventListener("click", function(evt){window.onlyOpenOneWindow("change-password");});
  586.  
  587. if(document.getElementById('click_to_reveal'))document.getElementById('click_to_reveal').addEventListener("click", function(evt){document.getElementById('rotmg_reveal').innerHTML = xx.rotmg;});
  588. if(document.getElementById('click_to_verify'))document.getElementById('click_to_verify').addEventListener("click", function(evt){window.onlyOpenOneWindow('verify-code');});
  589.  
  590. process_inv(xx.inv);
  591.  
  592. });
  593. socket.on('images_respond',function(owned_pics,pics_by_id,pics_by_rarity){
  594. $("#pics_info").html("");
  595. var blockunowned = "";
  596. var blockowned = "";
  597. $("#pics_ownedquant").html("You currently own " + owned_pics.length + "/" + pics_by_id.length + " pictures.");
  598. for(var x in pics_by_rarity){
  599. for(var y in pics_by_rarity[x]){
  600. var foundpic = owned_pics.indexOf(pics_by_rarity[x][y]);
  601. if(foundpic == -1){
  602. blockunowned += "<img picid='"+pics_by_rarity[x][y]+"' class='avatarpic unownedavatar' style='border-color:"+siteranks[x].namecolor+"' src='"+pics_by_id[pics_by_rarity[x][y]]+"'/>";
  603. }else{
  604. blockowned += "<img picid='"+pics_by_rarity[x][y]+"' class='avatarpic ownedavatar" + ((pics_by_id[pics_by_rarity[x][y]] == $("#sidebar_img").attr('src'))?" currentavatar":"") + "' style='border-color:"+siteranks[x].namecolor+"' src='"+pics_by_id[pics_by_rarity[x][y]]+"'/>";
  605. owned_pics.splice(foundpic,-1);
  606. }
  607. }
  608. }
  609. $("#change_picture").css('display','none');
  610. $("#pics_info").html(blockowned + blockunowned);
  611. })
  612. socket.on('images_change_respond',function(allGood,msg){
  613. console.log(msg);
  614. $("#change_picture").prop('disabled',false);
  615. $("#change_picture").css('display','none');
  616. $(".avatar-chosen").toggleClass("avatar-chosen",false);
  617. if(!allGood){
  618. $("#change_picture_result").css('color','#f33');
  619. }else{
  620. $("#change_picture_result").css('color','#0f0');
  621. socket.emit('images_get');
  622. }
  623. $("#change_picture_result").css('display','block');
  624. $("#change_picture_result").html(msg);
  625. })
  626.  
  627. $(document).on('click', ".ownedavatar", function() {
  628. if(!$(this).hasClass("currentavatar")){
  629. $(".avatar-chosen").toggleClass("avatar-chosen",false);
  630. $(this).toggleClass("avatar-chosen",true);
  631. $("#change_picture_result").css('display','none');
  632. $("#change_picture").css('display','block');
  633. }
  634. });
  635. $(document).on('click', ".avatar-chosen", function() {
  636. $(this).toggleClass("avatar-chosen",false);
  637. $("#change_picture").css('display','none');
  638. });
  639. $(document).on('click', "#change_picture", function() {
  640. socket.emit("images_change",$(".avatar-chosen").first().attr('picid'));
  641. $(this).toggleClass("avatar-chosen",false);
  642. $(this).prop('disabled',true);
  643. $("#change_picture").css('display','none');
  644. });
  645.  
  646. socket.on('verify_this',function(url,errorBool){
  647. if(errorBool){
  648. document.getElementById("the_url").href = url;
  649. document.getElementById("freeKKs1").style.display = 'none';
  650. document.getElementById("freeKKs2").style.display = 'block';
  651. }else{
  652. document.getElementById("freekk-reply").innerHTML = url;
  653. }
  654. document.getElementById("make-mule-button").style.display = 'block';
  655. })
  656.  
  657. socket.on('do_deposit',function(){
  658. document.getElementById("do_deposit").style.display = 'block';
  659. })
  660. socket.on('finished_withdrawal',function(){
  661. document.getElementById("accepted_withdrawal").style.display = 'block';
  662. document.getElementById('remove-withdrawal').style.display = 'none';
  663. document.getElementById('withdrawal_hide_if_current').style.display = 'block';
  664. document.getElementById('withdraw-error').style.color = '#00ff00';
  665. document.getElementById('withdraw-error').innerHTML = "Your withdrawal is complete! Do another one?";
  666. })
  667.  
  668. socket.on('rejected_withdrawal',function(){
  669. document.getElementById("rejected_withdrawal").style.display = 'block';
  670. document.getElementById('remove-withdrawal').style.display = 'none';
  671. document.getElementById('withdrawal_hide_if_current').style.display = 'block';
  672. document.getElementById('withdraw-error').style.color = '#ff0000';
  673. document.getElementById('withdraw-error').innerHTML = "Your withdrawal has been rejected, try again?";
  674. })
  675.  
  676. socket.on('pending_withdrawal',function(){
  677. document.getElementById('remove-withdrawal').style.display = 'block';
  678. document.getElementById('withdrawal_hide_if_current').style.display = 'none';
  679. document.getElementById('withdraw-error').style.color = '#ff0000';
  680. document.getElementById('withdraw-error').innerHTML = "You currently have a pending withdrawal, you must wait until it is complete.";
  681. })
  682.  
  683. socket.on('verify_confirm',function(message,errorBool){
  684. if(errorBool){
  685. document.getElementById("freekk-reply").innerHTML = message;
  686. document.getElementById("freekk-reply2").innerHTML = "";
  687. document.getElementById("freeKKs2").style.display = 'none';
  688. document.getElementById("freeKKs1").style.display = 'block';
  689. }else{
  690. document.getElementById("freekk-reply2").innerHTML = message;
  691. }
  692. document.getElementById("submit-mule-button").style.display = 'block';
  693. })
  694.  
  695. socket.on('deposit_mule',function(message,errorBool){
  696. if(errorBool){
  697. document.getElementById("deposit_creds").style.color = "#ffffff";
  698. document.getElementById("deposit_creds").innerHTML = "The mule account you have been granted (in email/password form) is:<br><div style='font-size: 2em;'><input type='text' readonly='readonly' class='copy-paste-field' style='width: 80%;' value='"+ message.email + "'/><br><input type='text' readonly='readonly' class='copy-paste-field' style='width: 80%;' value='"+ message.password + "'/></div>Please copy and paste this! Do not manually type it.";
  699. document.getElementById("deposit-timer").style.display = 'block';
  700. document.getElementById("deposit-timer").time = message.time;
  701. }else{
  702. document.getElementById("deposit-timer").style.display = 'none';
  703. document.getElementById("deposit_creds").style.color = "#ff0000";
  704. document.getElementById("deposit_creds").innerHTML = message;
  705. }
  706. document.getElementById("make-deposit-button").style.display = errorBool?'none':'block';
  707. document.getElementById("deposit-waiter").style.display = errorBool?'none':'block';
  708. document.getElementById("submit-deposit-button").style.display = errorBool?'block':'none';
  709. document.getElementById("report-deposit-button").style.display = errorBool?'block':'none';
  710. document.getElementById("deposit_creds").style.display = 'block';
  711. document.getElementById("deposit-reply").style.display = 'none';
  712. })
  713.  
  714. socket.on('deposit_reply',function(message,errorBool,newpw){
  715. if(errorBool){
  716. document.getElementById("deposit-timer").style.display = 'none';
  717. document.getElementById("deposit_creds").style.display = 'none';
  718. document.getElementById("deposit_creds").innerHTML = "";
  719. document.getElementById("make-deposit-button").style.display = 'block';
  720. document.getElementById("deposit-reply").style.color = '#00ff00';
  721. }else{
  722. document.getElementById("deposit_creds").style.display = 'block';
  723. document.getElementById("deposit_creds").style.color = "#ffffff";
  724. document.getElementById("make-deposit-button").style.display = 'none';
  725. document.getElementById("deposit-timer").style.display = 'block';
  726. document.getElementById("deposit-reply").style.color = "#ff0000";
  727. }
  728. document.getElementById("deposit-waiter").style.display = errorBool?'block':'none';
  729. document.getElementById("submit-deposit-button").style.display = errorBool?'none':'block';
  730. document.getElementById("report-deposit-button").style.display = errorBool?'none':'block';
  731.  
  732. document.getElementById("deposit-reply").innerHTML = message;
  733. if(newpw){
  734. document.getElementById("deposit-reply").innerHTML += "<br>The new password is "+newpw
  735. }
  736. document.getElementById("deposit-reply").style.display = 'block';
  737. })
  738.  
  739. socket.on('deposit_report_reply',function(message,errorBool){
  740. if(errorBool){
  741. document.getElementById("deposit_creds").style.color = "#ffffff";
  742. document.getElementById("deposit-timer").style.display = 'block';
  743. document.getElementById("deposit-reply").style.color = '#00ff00';
  744. }else{
  745. document.getElementById("deposit-timer").style.display = 'none';
  746. document.getElementById("deposit_creds").style.color = "#ff0000";
  747. document.getElementById("deposit-reply").style.color = '#ff0000';
  748. }
  749. document.getElementById("make-deposit-button").style.display = errorBool?'none':'block';
  750. document.getElementById("deposit-waiter").style.display = errorBool?'none':'block';
  751. document.getElementById("submit-deposit-button").style.display = errorBool?'block':'none';
  752. document.getElementById("report-deposit-button").style.display = errorBool?'block':'none';
  753. document.getElementById("deposit_creds").style.display = errorBool?'block':'none';
  754. document.getElementById("deposit-reply").innerHTML = message;
  755. })
  756.  
  757. document.getElementById('kkshop-package-buybtn').addEventListener("click", function(evt){
  758. $("#kkshop-package-buybtn").prop("disabled",true);
  759. document.getElementById('kkshop-package-buybtn').style.backgroundColor="#2a2a2a";
  760. socket.emit('buyPackage',document.getElementById('test-kk-packages-stage2-name').innerHTML);
  761. });
  762. var clearChestTimeout;
  763. socket.on('buyPackageReply',function(allGood,reply){
  764. $("#kkshop-package-buybtn").prop("disabled",false);
  765. document.getElementById('kkshop-package-buybtn').style.backgroundColor="#448844";
  766. if(!allGood){
  767. document.getElementById('kkshop-package-error').style.color = "#ff1a1a";
  768. document.getElementById('kkshop-package-error').innerHTML = reply;
  769. }else{
  770. openChest(reply)
  771. document.getElementById('kkshop-package-error').style.color = "#1afd1a";
  772. document.getElementById('kkshop-package-error').innerHTML = "Purchase complete!";
  773. }
  774. })
  775. $("#kkshop-package-completebtn").click(function(){
  776. prepareKKpackOut(KKpackagesOutcome,false);
  777. if(document.getElementById("kk-packages-complete").style.display == "block"){
  778. var thisButton = $(this);
  779. thisButton.prop("disabled",true);
  780. $("#kk-packages-complete-outcome").animate({bottom:"35%"},380);
  781. setTimeout(function(){$("#kk-packages-complete-outcome").animate({bottom:"3%"},380);},400)
  782. setTimeout(function(){thisButton.prop("disabled",false);},850)
  783. }
  784. });
  785.  
  786. $(".infotab-button").click(function(){
  787. var findID = $(this).attr('idclick');
  788. $(".infotab-button").each(function(){
  789. $(this).removeClass('selected-info');
  790. })
  791. $(this).addClass('selected-info');
  792. $(".info-holder").each(function(){
  793. if($(this).attr('id') == findID){
  794. $(this).animate({left:"0%"},400);
  795. }else{
  796. $(this).animate({left:"100%"},400);
  797. }
  798. })
  799. });
  800.  
  801. function openChest(reply){
  802. $("#kk-packages-chest-reveal").css("background-image","url('/client/resources/CChest1seq.png')");
  803. document.getElementById('kk-packages-complete-count').style.display = "none";
  804. document.getElementById('kkshop-package-completebtn').style.display = "none";
  805. $("#kk-packages-chest-reveal").css("animation","drop-down 1.5s");
  806. $("#kk-packages-complete-outcome").css("bottom","35%");
  807. clearChestTimeout = setTimeout(function(){
  808. $("#kk-packages-complete-outcome").animate({bottom:"3%"},380);
  809. $("#kk-packages-chest-reveal").css("animation","chest-open 0.3s steps(1) forwards");
  810. setTimeout(function(){
  811. document.getElementById('kk-packages-complete-count').style.display = "block";
  812. document.getElementById('kkshop-package-completebtn').style.display = "block";
  813. },400);
  814. },1750);
  815. document.getElementById('kk-packages-complete').style.display = "block";
  816. KKpackagesOutcome = reply;
  817. window.onresize();
  818. prepareKKpackOut(KKpackagesOutcome,true);
  819. }
  820.  
  821. function prepareKKpackOut(outcome,fast){
  822. if(outcome.length == 0){
  823. document.getElementById('kk-packages-complete').style.display = "none";
  824. $("#kk-packages-complete-outcome").stop(true, true);
  825. $("#kk-packages-complete-outcome").css("bottom","35%");
  826. }else{
  827. setTimeout(function(){
  828. if(outcome.length == 1){
  829. document.getElementById('kkshop-package-completebtn').innerHTML = "Close";
  830. }else{
  831. document.getElementById('kkshop-package-completebtn').innerHTML = "Next";
  832. }
  833. document.getElementById('kk-packages-complete-outcome').innerHTML = "";
  834. var popped = outcome.shift();
  835. document.getElementById('kk-packages-complete-count').innerHTML = outcome.length
  836. if("items" in popped){
  837. for(var j in popped.items)document.getElementById('kk-packages-complete-outcome').innerHTML += "<div class='item chest-reveal-item' style='background-image:url("+ items[window.id_to_pos(parseInt(j))].image.src +");'><div class='chest-reveal-item-q'>"+popped.items[j]+"</div></div>"
  838. }else if("ranks" in popped){
  839. for(var j in popped.ranks)document.getElementById('kk-packages-complete-outcome').innerHTML += "<div class='chest-reveal-rank-contain'><img class='chest-reveal-rank-img' src='"+siteranks[j].name+"'><div class='chest-reveal-rank-info' style='color:"+siteranks[j].namecolor+"'>"+siteranks[j].title+" Rank<br><span style='font-size:0.6em;color:white;'>Duration: "+time_to_english(popped.ranks[j])+"</span></div></div>" //RANK STUFF GOES HERE
  840. }else if("KK" in popped){
  841. document.getElementById('kk-packages-complete-outcome').innerHTML += "<span style='font-size:2em;color:yellow'>"+popped.KK+"KK</span>"
  842. }else if("pics" in popped){
  843. if(popped.pics[1]==true){
  844. document.getElementById('kk-packages-complete-outcome').innerHTML += "<span style='color:"+siteranks[popped.pics[2]].namecolor+"'>Picture Unlocked!</span><br><img class='avatarpic kkpic' style='border-color:"+siteranks[popped.pics[2]].namecolor+"' src='"+popped.pics[0]+"'/>"
  845. }else{
  846. document.getElementById('kk-packages-complete-outcome').innerHTML += "<span style='color:"+siteranks[popped.pics[2]].namecolor+"'>Already owned!<br>You will receive compensation instead</span><br><img class='avatarpic kkpic-alreadyowned' style='border-color:"+siteranks[popped.pics[2]].namecolor+"' src='"+popped.pics[0]+"'/>"
  847. }
  848. }else if("nothing" in popped){
  849. document.getElementById('kk-packages-complete-outcome').innerHTML += "<div class='chest-reveal-rank-contain' style='border:none;color:white;font-size: 2em;padding-top:unset;'>Nothing!<br><span style='font-size:0.6em;'>Sorry, Try again!</span></div>" //RANK STUFF GOES HERE
  850. }
  851. },fast?1:400);
  852. }
  853. }
  854.  
  855. socket.on('purchaseResponse',function(allGood,reply){
  856. if(allGood){
  857. document.getElementById('test-kk-shop-stage2-buy-msg').innerHTML = reply;
  858. $("#test-kk-shop-stage2-buy-btn").prop("disabled",false);
  859. }
  860. })
  861.  
  862. $( 'button.test-kk-shop-switch' ).click(function(){
  863. if($(this).attr('id') == "kk-stoRS"){
  864. window.open('https://realmstock.com/');
  865. }else{
  866. var shop_switches = document.getElementsByClassName("kk-important-info");
  867. for(var h =0; h < shop_switches.length;h++)shop_switches[h].style.display = 'none';
  868. }
  869. })
  870. document.getElementById('kk-stoitems').onclick = function(){document.getElementById('kk-item-info').style.display = 'block';}
  871. document.getElementById('kk-stopacks').onclick = function(){document.getElementById('kk-packages-info').style.display = 'block';}
  872. document.getElementById('kk-stoclrs').onclick = function(){document.getElementById('kk-colors-info').style.display = 'block';}
  873. document.getElementById('kk-stopics').onclick = function(){document.getElementById('kk-pics-info').style.display = 'block';}
  874. document.getElementById('kk-storanks').onclick = function(){document.getElementById('kk-ranks-info').style.display = 'block';}
  875. document.getElementById('kk-stokk').onclick = function(){document.getElementById('kk-buykk-info').style.display = 'block';}
  876. function build_pack_price(price){
  877. var a = [];
  878. if("KK" in price)a.push("<span style='color:yellow'>"+price.KK+"KK</span>")
  879. if("items" in price)a.push("Items" + form_help_bubble(price.items));
  880. if(a.length == 0)return "<span style='color:yellow;'>Free!</span>";
  881. else return "<span style='color:yellow;'>Price: </span>"+a.join(" and ");
  882. }
  883. function form_help_bubble(obj_of_items){
  884. var block = '<div class="hover-for-info kk-pack-hoverinfo">?<div class="hover-for-info-content">'
  885. for(var i in obj_of_items)block += "<div class='kkpitemchance' style='position:relative;background-image:url("+ items[window.id_to_pos(i)].image.src +");background-size: contain;'>" + (obj_of_items[i]==1?"":"<div class='wdItemQuant' style='text-align:left;'>"+obj_of_items[i]+"</div>")+"</div>"
  886. block += '</div></div>';
  887. return block;
  888. }
  889.  
  890. var KKpackages = [];
  891. var KKpackagesOutcome = [];
  892. socket.on('returnPackages',function(packs){
  893. KKpackages = packs;
  894. document.getElementById('test-packages-info').innerHTML = "";
  895. for(var m in packs){
  896. if(packs[m].expiry > Date.now() && packs[m].stock > 0){
  897. var block = "<div name='"+window.escapeHtml(packs[m].name)+"'class='kk-package-pack'><div class='kk-package-img' style='background:url(\""+packs[m].img+"\");background-size: contain;background-repeat: no-repeat;'></div><div class='kk-package-packinfo'>"+packs[m].name+" - Stock: "+packs[m].stock+"<br>";
  898. block += build_pack_price(packs[m].price);
  899. block += "<br><span style='font-size:0.8em;'>Expires in "+time_to_english(packs[m].expiry - Date.now())+".</span></div></div>"
  900. document.getElementById('test-packages-info').innerHTML += block;
  901. }
  902. }
  903.  
  904. $( 'div.kk-package-pack' ).click(function(){
  905. for(var n in KKpackages){
  906. if(window.escapeHtml(KKpackages[n].name) == window.escapeHtml($(this).attr('name'))){
  907. document.getElementById('kkshop-package-error').innerHTML = "";
  908. document.getElementById('test-kk-packages-stage2-name').innerHTML = KKpackages[n].name;
  909. document.getElementById('test-kk-shop').style.display = "none";
  910. document.getElementById('test-kk-packages-stage2').style.display = "block";
  911. document.getElementById('kkshop-package-buybtnprice').innerHTML = build_pack_price(KKpackages[n].price);
  912. var block = "<div style='width: 100%;padding-top:30%;position:relative;'><img src='"+KKpackages[n].img+"' style='position:absolute;left:0px;top:0px;width:50%'><div class='packages_desc'>"+window.escapeHtml(KKpackages[n].desc)+"</div></div>";
  913. if(KKpackages[n].maxbuy || KKpackages[n].mintotalwagered){
  914. block += "<div class='kkshop-package-attention'>"
  915. if(KKpackages[n].maxbuy)block += "<span style='color:#f06;'>You can only buy a maximum of "+KKpackages[n].maxbuy.quant+" of this pack.</span><br>";
  916. if(KKpackages[n].mintotalwagered)block += "<span style='color:#f60;'>You must have wagered at least a total of "+KKpackages[n].mintotalwagered+"F.</span><br>";
  917. if(KKpackages[n].minrank)block += "<span style='color:"+siteranks[KKpackages[n].minrank].namecolor+";'>You must have at least "+siteranks[KKpackages[n].minrank].title+" Rank.</span><br>";
  918. block += "</div>"
  919. }
  920. if(Object.keys(KKpackages[n].items).length > 0 || "chance" in KKpackages[n].special || "additional" in KKpackages[n].special || "chance_multiple" in KKpackages[n].special){
  921. block += "<div style='width: 100%'><span class='kkshop-package-header'>Items</span><br>"
  922.  
  923. if(Object.keys(KKpackages[n].items).length > 0){
  924. block += "<div style='width: 100%'><span class='kkshop-package-header-small'>You get:</span><br>"
  925. for(var j in KKpackages[n].items)block+= "<div class='kkpitem' style='position:relative;background-image:url("+ items[window.id_to_pos(parseInt(j))].image.src +");background-size: contain;'>"+ (KKpackages[n].items[j]==1?"":("<div class='wdItemQuant' style='text-align:left;'>"+KKpackages[n].items[j]+"</div>")) + "</div>";
  926. }
  927.  
  928. if("chance" in KKpackages[n].special){
  929. for(var i in KKpackages[n].special.chance){
  930. block += "<div style='width: 100%'><span class='kkshop-package-header-small'>You get one of these:</span><br><div style='border:solid 3px #333;position: relative;display: inline-block;background-color:#2e2e2e'>"
  931. for(var j in KKpackages[n].special.chance[i])block+= "<div class='kkpitemchance' style='position:relative;background-image:url("+ items[window.id_to_pos(KKpackages[n].special.chance[i][j].id)].image.src +");background-size: contain;'>" + (KKpackages[n].special.chance[i][j].quant==1?"":"<div class='wdItemQuant' style='text-align:left;'>"+KKpackages[n].special.chance[i][j].quant+"</div>")+"<div class='kkpitemprob'>" +Number(KKpackages[n].special.chance[i][j].prob.toFixed(2))+"%</div></div>"
  932. block+="</div><br></div>"
  933. }
  934. }
  935. if("chance_multiple" in KKpackages[n].special){
  936. for(var i in KKpackages[n].special.chance_multiple){
  937. block += "<div style='width: 100%'><span class='kkshop-package-header-small'>You get one of these:</span><br>"
  938. for(var j in KKpackages[n].special.chance_multiple[i]){
  939. block += "<div style='border:solid 2px #cd0;position: relative;display: inline-block;background-color:#2e2e2e'>"
  940. for(var x in KKpackages[n].special.chance_multiple[i][j].items)block+="<div class='kkpitemchance' style='position:relative;background-image:url("+ items[window.id_to_pos(x)].image.src +");background-size: contain;'>" + (KKpackages[n].special.chance_multiple[i][j].items[x]==1?"":"<div class='wdItemQuant' style='text-align:left;'>"+KKpackages[n].special.chance_multiple[i][j].items[x]+"</div>") + "</div>"
  941. block+= "<div class='kkpitemprob'>"+Number(KKpackages[n].special.chance_multiple[i][j].prob.toFixed(2))+"%</div></div>"
  942. }
  943. block+="</div><br>"
  944. }
  945. }
  946. if("additional" in KKpackages[n].special){
  947. block += "<div style='width: 100%'><span class='kkshop-package-header-small'>Chance to win items:</span><br>"
  948. for(var i in KKpackages[n].special.additional){
  949. block+="<div style='border:solid 3px #aa3;margin:8px;position: relative;display: inline-block;background-color:#2e2e2e'>"
  950. block+= "<div class='kkpitemchance' style='position:relative;background-image:url("+ items[window.id_to_pos(KKpackages[n].special.additional[i].id)].image.src +");background-size: contain;'>" + (KKpackages[n].special.additional[i].quant==1?"":"<div class='wdItemQuant' style='text-align:left;'>"+KKpackages[n].special.additional[i].quant+"</div>") + "<div class='kkpitemprob'>"+Number(KKpackages[n].special.additional[i].prob.toFixed(2))+"%</div></div>"
  951. block+="</div>"
  952. }
  953. block += "</div>"
  954. }
  955. block += "</div>"
  956. }
  957. if(round.rank > 0 && Object.keys(KKpackages[n].ranks).length > 0){
  958. block += "<div style='width: 100%'><span class='kkshop-package-header'>Ranks</span><br>"
  959. for(var j in KKpackages[n].ranks)block+= "<div class='kkprankcontain'><img class='kkprankimg' src='"+siteranks[j].name+"'><div class='kkprankinfo' style='color:"+siteranks[j].namecolor+"'>"+siteranks[j].title+" Rank<br><span style='font-size:0.6em;color:white;'>Duration: "+time_to_english(KKpackages[n].ranks[j])+"</span></div></div>" //RANK STUFF GOES HERE
  960. block += "</div>"
  961. }
  962. if("pictures" in KKpackages[n].special){
  963. block += "<div style='width: 100%'><span class='kkshop-package-header'>Pictures</span><br>"
  964. block += "<div style='width: 100%'><span class='kkshop-package-header-small'>You will get "+KKpackages[n].special.pictures.quant+" picture"+(KKpackages[n].special.pictures.quant==1?"":"s")+":</span></div>"
  965. for(var x = 0; x <= 3; x++)if(KKpackages[n].special.pictures[String(x)]>0)block+= "<div class='item kkppicture' style='position:relative;background-image:url(\"/client/resources/MysterySkin"+ (x+1) +".png\");background-size: contain;'><div class='kkpitemprob'>"+KKpackages[n].special.pictures[String(x)].toFixed(2)+"%</div></div>";
  966. block += "<div style='width: 100%'><span class='kkshop-package-header-small'>Same-Picture Compensation:</span><br>"
  967. for(var j in KKpackages[n].special.pictures.compensation)block+= "<div class='kkpitem' style='position:relative;background-image:url("+ items[window.id_to_pos(parseInt(j))].image.src +");background-size: contain;'>"+ (KKpackages[n].special.pictures.compensation[j]==1?"":("<div class='wdItemQuant' style='text-align:left;'>"+KKpackages[n].special.pictures.compensation[j]+"</div>")) + "</div>";
  968. block += "</div></div>"
  969. }
  970. document.getElementById('kkshop-package-info').innerHTML = block;
  971. window.onresize();
  972. break;
  973. }
  974. }
  975. });
  976. })
  977. function time_to_english(mtime){
  978. if(mtime <= 0)return "now"
  979. var num = 0;
  980. var count = 0;
  981. var timetype = [31536000000,2592000000,604800000,86400000,3600000,60000,1000];
  982. var timeid = ["year","month","week","day","hour","minute","second"];
  983. var string = "";
  984. mtime = Math.ceil(mtime/1000)*1000
  985. for(var x = 0; x<timetype.length; x++){
  986. if(mtime>=timetype[x]){
  987. count++
  988. num = (mtime/timetype[x]);
  989. var num2 = Math.floor(num);
  990. var dec = (num%1);
  991. mtime = Math.ceil(dec*timetype[x]);
  992. if(count<4){
  993. var plural = "s"
  994. if(num<2){
  995. plural = ""
  996. }
  997. if(count==2&&mtime>=500){
  998. string+= ", "
  999. }
  1000. if(count==2&&mtime<=500){
  1001. string+=" and "
  1002. }
  1003. if(count==3){
  1004. string+= " and "
  1005. }
  1006. string += num2.toString() + " " + timeid[x] + plural
  1007. }
  1008. }
  1009. }
  1010. return string
  1011. }
  1012.  
  1013. var KKitemselected = 0;
  1014. socket.on('shop',function(shopinv){
  1015. document.getElementById('test-kk-shop-table').innerHTML = "";
  1016. for(var j in shopinv){
  1017. if(shopinv[j].quant > 0){
  1018. block = "<div class='shop-i item' name='"+ window.escapeHtml(items[window.id_to_pos(shopinv[j].id)].name) +"' style='background-image:url("+ items[window.id_to_pos(shopinv[j].id)].image.src +");"
  1019. block += " background-size: contain; '"
  1020. block += "itemid='"+ shopinv[j].id +"'"
  1021. block += "itemprice='"+ shopinv[j].id +"'"
  1022. block += "itemquant='"+ shopinv[j].quant +"'>"
  1023. block += "</div>"
  1024. document.getElementById('test-kk-shop-table').innerHTML += block;
  1025. }
  1026. }
  1027. $( '.shop-i' ).mouseenter( function(){
  1028. var block = "<span style='font-size:36px;'>"
  1029. block += window.escapeHtml($(this).attr('name')) + "<br>"
  1030. block += $(this).attr('itemquant') +" left in stock!<br>Base price: ";
  1031. var itemprice = Number((Math.round(FtoKK(items[window.id_to_pos(Number($(this).attr('itemid')))].val,1)*10)/10).toFixed(1));
  1032. block += (itemprice>=myInv.KK?"<span style='color:#ee6666'>":"<span style='color:#66ee66'>") + itemprice +"KK</span></span>";
  1033. document.getElementById('test-kk-shop-info').innerHTML = block;
  1034. }).mouseleave( function(){
  1035. document.getElementById('test-kk-shop-info').innerHTML = "";
  1036. }).click(function(){
  1037. window.onlyOpenOneWindow('test-kk-shop-stage2');
  1038. document.getElementById('test-kk-shop-stage2-name').innerHTML = "How many of "+$(this).attr('name')+" would you like to purchase?"
  1039.  
  1040. document.getElementById('test-kk-shop-stage2-img').style.backgroundImage = $(this).css('background-image')
  1041. document.getElementById('test-kk-shop-stage2-img2').style.backgroundImage = $(this).css('background-image')
  1042.  
  1043. document.getElementById('test-kk-shop-stage2-buy-msg').innerHTML = ""
  1044.  
  1045. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = ""
  1046. document.getElementById("test-kk-shop-stage2-quantitybox").value = ""
  1047.  
  1048. KKitemselected = $(this).attr('itemid');
  1049. quantitemselected = $(this).attr('itemquant');
  1050.  
  1051. $("#test-kk-shop-stage2-quantitybox").on('keyup', function (e) {
  1052. quantityK = document.getElementById("test-kk-shop-stage2-quantitybox").value;
  1053. if(quantityK == ""){
  1054. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = ""
  1055. $("#test-kk-shop-stage2-buy-btn").prop("disabled",true);
  1056. }else if(isNaN(Number(quantityK))){
  1057. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "Not a valid number!"
  1058. $("#test-kk-shop-stage2-buy-btn").prop("disabled",true);
  1059. }else if(Number(quantityK) != parseInt(quantityK)){
  1060. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "Cannot use decimals!"
  1061. $("#test-kk-shop-stage2-buy-btn").prop("disabled",true);
  1062. }else if(parseInt(quantityK) < 1){
  1063. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "Can't buy negative or zero!"
  1064. $("#test-kk-shop-stage2-buy-btn").prop("disabled",true);
  1065. }else{
  1066. KKshopprice = Number((Math.round(FtoKK(items[window.id_to_pos(Number(KKitemselected))].val,parseInt(quantityK))*parseInt(quantityK)*10)/10).toFixed(1))
  1067. if(parseInt(quantityK) > quantitemselected){
  1068. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "There is not enough of this to buy!"
  1069. $("#test-kk-shop-stage2-buy-btn").prop("disabled",true);
  1070. }else if(KKshopprice > myInv.KK){
  1071. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "You do not have enough KK to buy this!"
  1072. $("#test-kk-shop-stage2-buy-btn").prop("disabled",true);
  1073. }else{
  1074. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "Price: " + KKshopprice + "KK"
  1075. $("#test-kk-shop-stage2-buy-btn").prop("disabled",false);
  1076. }
  1077. }
  1078. });
  1079.  
  1080. document.getElementById('test-kk-shop-stage2-buy-btn').onclick = function(){
  1081. socket.emit('buy',Number(KKitemselected),Number(document.getElementById("test-kk-shop-stage2-quantitybox").value));
  1082. $("#test-kk-shop-stage2-buy-btn").prop("disabled",true);
  1083. };
  1084.  
  1085. $('#test-kk-shop-stage2-maximize').click(function(){
  1086. maxprice = Number((Math.round(FtoKK(items[window.id_to_pos(Number(KKitemselected))].val,parseInt(quantitemselected))*parseInt(quantitemselected)*10)/10).toFixed(1))
  1087. if(maxprice <= myInv.KK){
  1088. document.getElementById("test-kk-shop-stage2-quantitybox").value = quantitemselected;
  1089. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "Price: " + maxprice + "KK"
  1090. $("#test-kk-shop-stage2-buy-btn").prop("disabled",false);
  1091. }else{
  1092. lowestprice = Number((Math.round(FtoKK(items[window.id_to_pos(Number(KKitemselected))].val,1)*10)/10).toFixed(1))
  1093. if(lowestprice > myInv.KK){
  1094. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "You do not have enough KK to buy any of this!"
  1095. $("#test-kk-shop-stage2-buy-btn").prop("disabled",true);
  1096. }else{
  1097. max_quant = highest_quant(1,parseInt(quantitemselected)-1,myInv.KK,parseInt(KKitemselected));
  1098. document.getElementById("test-kk-shop-stage2-quantitybox").value = max_quant;
  1099. price_of_max_quant = Number((Math.round(FtoKK(items[window.id_to_pos(Number(KKitemselected))].val,max_quant)*max_quant*10)/10).toFixed(1))
  1100. document.getElementById('test-kk-shop-stage2-price-msg').innerHTML = "Price: " + price_of_max_quant + "KK"
  1101. $("#test-kk-shop-stage2-buy-btn").prop("disabled",false);
  1102. }
  1103. }
  1104. })
  1105. });
  1106. });
  1107.  
  1108. socket.on('tasks',function(tasks){
  1109. update_tasks(tasks);
  1110. });
  1111. socket.on('update_tasks',function(tasks,cc){
  1112. update_tasks(tasks);
  1113. var itemBlock = "";
  1114. for(var i in cc.items)itemBlock += list_prizes_snippet2(i,cc.items[i],25)
  1115. if(cc.amount > 0){
  1116. document.getElementById('WOW_OJ_TASKS_COMPLETE').style.display = "block";
  1117. document.getElementById('WOW_OJ_TASKS_COMPLETE').innerHTML = "<span>"+ cc.amount + " challenge" + (cc.amount==1?"":"s") + " complete!</span>"+ (cc.KK==0?"":"<br><span style='color:#ffff00'>"+cc.KK+" KK</span>") + "<br><span style='position: relative;top: -11px;'>"+itemBlock+"</span>"
  1118. $('#WOW_OJ_TASKS_COMPLETE').delay(7000).fadeOut(1200);
  1119. }
  1120. });
  1121. document.getElementById('WOW_OJ_TASKS_COMPLETE').addEventListener("click", function(evt){window.onlyOpenOneWindow("giveaway_window");});
  1122. function list_prizes_snippet2(id,quant,size){
  1123. block = "<span style='height:"+size+"px;-webkit-text-fill-color: white;-webkit-text-stroke-width: 1px;-webkit-text-stroke-color: black;'>" + quant + "</span>"
  1124. block += "<div class='item' style='font-size:26px;background-image:url("+ items[window.id_to_pos(id)].image.src +");width:"+size+"px;height:"+size+"px;top: 8px;background-size: contain;color:#ffffff; '></div>"
  1125. return block;
  1126. }
  1127. function series_of_challenges(task_bunch){
  1128. var data = "";
  1129. var lastChallengeDone = true;
  1130. for(var i = 0; i < task_bunch.length; i++){
  1131. if(lastChallengeDone){
  1132. lastChallengeDone = task_bunch[i].task.track //overwrite if current challenge is done
  1133. data += add_task_title_snip2(task_bunch[i].title,lastChallengeDone) + add_progression_bar_snip2(task_bunch[i].percent,task_bunch[i].text) + add_task_prize_snip(task_bunch[i].task);
  1134. }
  1135. }
  1136. return data;
  1137. }
  1138. function update_tasks(tasks){
  1139. document.getElementById('giveaway_table_daily').innerHTML = series_of_challenges([
  1140. {title:"Play some OryxJackpot!",percent:tasks.daily.total_wagered/200,task:tasks.daily.total_wagered_200,text:"Wager a total of 200F"},
  1141. {title:"Play some OryxJackpot! II",percent:tasks.daily.total_wagered/1000,task:tasks.daily.total_wagered_1000,text:"Wager a total of 1000F"}
  1142. ])+ "<br>" + series_of_challenges([
  1143. {title:"Make some money!",percent:tasks.daily.total_won/100,task:tasks.daily.total_won_100,text:"Win a total of 100F"}
  1144. ])+ "<br>" + series_of_challenges([
  1145. {title:"Play Jackpot!",percent:tasks.daily.total_wagers_jp/5,task:tasks.daily.total_wagers_5_jp,text:"Play the Jackpot gamemode 5 times!"}
  1146. ])+ "<br>" + series_of_challenges([
  1147. {title:"Play Break the Chest!",percent:tasks.daily.total_wagers_btc/5,task:tasks.daily.total_wagers_5_btc,text:"Play the Break the Chest gamemode 5 times!"}
  1148. ])+ "<br>" + series_of_challenges([
  1149. {title:"Play Coinflip!",percent:tasks.daily.total_wagers_cf/5,task:tasks.daily.total_wagers_5_cf,text:"Play the Coinflip gamemode 5 times!"}
  1150. ])
  1151.  
  1152. document.getElementById('giveaway_table_general').innerHTML = series_of_challenges([
  1153. {title:"Wager items!",percent:tasks.general.total_wagered/100,task:tasks.general.total_wager_100,text:"Wager a total of 100F"},
  1154. {title:"Wager items! II",percent:tasks.general.total_wagered/1500,task:tasks.general.total_wager_1500,text:"Wager a total of 1500F"},
  1155. {title:"Wager items! III",percent:tasks.general.total_wagered/25000,task:tasks.general.total_wager_25000,text:"Wager a total of 25000F"},
  1156. {title:"Wager items! IV",percent:tasks.general.total_wagered/80000,task:tasks.general.total_wager_80000,text:"Wager a total of 80000F"},
  1157. {title:"Wager items! V",percent:tasks.general.total_wagered/200000,task:tasks.general.total_wager_200000,text:"Wager a total of 200000F"},
  1158. {title:"Wager items! VI",percent:tasks.general.total_wagered/777777,task:tasks.general.total_wager_777777,text:"Wager a total of 777777F"}
  1159. ]) + "<br>" + series_of_challenges([
  1160. {title:"Win rounds!",percent:tasks.general.total_wins,task:tasks.general.total_wins_1,text:"Win a round"},
  1161. {title:"Win rounds! II",percent:tasks.general.total_wins/10,task:tasks.general.total_wins_10,text:"Win 10 rounds"},
  1162. {title:"Win rounds! III",percent:tasks.general.total_wins/100,task:tasks.general.total_wins_100,text:"Win 100 rounds"},
  1163. {title:"Win rounds! IV",percent:tasks.general.total_wins/1000,task:tasks.general.total_wins_1000,text:"Win 1000 rounds"}
  1164. ]) + "<br>" + series_of_challenges([
  1165. {title:"Win items!",percent:tasks.general.total_won/300,task:tasks.general.total_won_300,text:"Win a total of 300F"},
  1166. {title:"Win items! II",percent:tasks.general.total_won/4500,task:tasks.general.total_won_4500,text:"Win a total of 4500F"},
  1167. {title:"Win items! III",percent:tasks.general.total_won/60000,task:tasks.general.total_won_60000,text:"Win a total of 60000F"},
  1168. {title:"Win items! IV",percent:tasks.general.total_won/100000,task:tasks.general.total_won_100000,text:"Win a total of 100000F"},
  1169. {title:"Win items! IV",percent:tasks.general.total_won/222222,task:tasks.general.total_won_222222,text:"Win a total of 222222F"}
  1170. ]) + "<br>" + series_of_challenges([
  1171. {title:"Get lucky!",percent:(100-tasks.general.luckiest_win)/80,task:tasks.general.win_below_20,text:"Win with less than a 20% chance"},
  1172. {title:"Get lucky! II",percent:(20-tasks.general.luckiest_win)/10,task:tasks.general.win_below_10,text:"Win with less than a 10% chance"},
  1173. {title:"Get lucky! III",percent:(10-tasks.general.luckiest_win)/5,task:tasks.general.win_below_5,text:"Win with less than a 5% chance"},
  1174. {title:"Get lucky! IV",percent:(5-tasks.general.luckiest_win)/3,task:tasks.general.win_below_2,text:"Win with less than a 2% chance"}
  1175. ]) + "<br>" + series_of_challenges([
  1176. {title:"Better luck next time!",percent:tasks.general.total_rounds_lost/10,task:tasks.general.lose_rounds_10,text:"Lose 10 rounds"},
  1177. {title:"Better luck next time! II",percent:tasks.general.total_rounds_lost/100,task:tasks.general.lose_rounds_100,text:"Lose 100 rounds"},
  1178. {title:"Better luck next time! III",percent:tasks.general.total_rounds_lost/1000,task:tasks.general.lose_rounds_1000,text:"Lose 1000 rounds"},
  1179. {title:"Better luck next time! IV",percent:tasks.general.total_rounds_lost/10000,task:tasks.general.lose_rounds_10000,text:"Lose 10000 rounds"}
  1180. ]) + "<br>" + series_of_challenges([
  1181. {title:"Cruel Fate",percent:tasks.general.unluckiest_loss/70,task:tasks.general.lose_with_70,text:"Lose with more than a 70% chance"},
  1182. {title:"Cruel Fate II",percent:tasks.general.unluckiest_loss/80,task:tasks.general.lose_with_80,text:"Lose with more than a 80% chance"},
  1183. {title:"Cruel Fate III",percent:tasks.general.unluckiest_loss/86,task:tasks.general.lose_with_86,text:"Lose with more than a 86% chance"},
  1184. {title:"Cruel Fate IV",percent:tasks.general.unluckiest_loss/92,task:tasks.general.lose_with_92,text:"Lose with more than a 92% chance"},
  1185. ]) + "<br>" + series_of_challenges([
  1186. {title:"You were SO close!",percent:tasks.general.so_close_60_hash.track?100:0,task:tasks.general.so_close_60_hash,text:"Lose by a 6% difference or less"},
  1187. {title:"You were SO close! II",percent:tasks.general.so_close_20_hash.track?100:0,task:tasks.general.so_close_20_hash,text:"Lose by a 2% difference or less"},
  1188. {title:"You were SO close! III",percent:tasks.general.so_close_08_hash.track?100:0,task:tasks.general.so_close_08_hash,text:"Lose by a 0.8% difference or less"}
  1189. ]) + "<br>" + series_of_challenges([
  1190. {title:"That's really low",percent:tasks.general.hash_lower_than_pt5.track?100:0,task:tasks.general.hash_lower_than_pt5,text:"Participate in a round with the hash lower than 0.5"},
  1191. ]) + "<br>" + series_of_challenges([
  1192. {title:"That's really high",percent:tasks.general.hash_higher_than_99pt5.track?100:0,task:tasks.general.hash_higher_than_99pt5,text:"Participate in a round with the hash higher than 99.5"},
  1193. ]);
  1194.  
  1195. document.getElementById('giveaway_table_jackpot').innerHTML = series_of_challenges([
  1196. {title:"Off by an inch",percent:tasks.jackpot.close_image_roll.track?100:0,task:tasks.jackpot.close_image_roll,text:"With at most a 20% chance, lose with your image to the left and the right of the winner."},
  1197. ]) + "<br>" + series_of_challenges([
  1198. {title:"Party in the House",percent:tasks.jackpot.participate_6_unique.track?100:0,task:tasks.jackpot.participate_6_unique,text:"Participate in a round with at least 6 players"},
  1199. {title:"Party in the House II",percent:tasks.jackpot.participate_12_unique.track?100:0,task:tasks.jackpot.participate_12_unique,text:"Participate in a round with at least 12 players"}
  1200. ]) + "<br>" + series_of_challenges([
  1201. {title:"The longest round ever!",percent:tasks.jackpot.timer_got_to_50_secs.track?100:0,task:tasks.jackpot.timer_got_to_50_secs,text:"Participate in a round where the timer reached 60 seconds"},
  1202. ]) + "<br>" + series_of_challenges([
  1203. {title:"I have a dream...",percent:tasks.jackpot.pot_at_least_25000F.track?100:0,task:tasks.jackpot.pot_at_least_25000F,text:"Participate in a round where the pot is at least 25000F"},
  1204. ]) + "<br>" + series_of_challenges([
  1205. {title:"Same game, different rules",percent:tasks.jackpot.special_rounds_count,task:tasks.jackpot.special_rounds_1,text:"Participate in a special round"},
  1206. {title:"Same game, different rules II",percent:tasks.jackpot.special_rounds_count/10,task:tasks.jackpot.special_rounds_10,text:"Participate in 10 special rounds"},
  1207. {title:"Same game, different rules III",percent:tasks.jackpot.special_rounds_count/100,task:tasks.jackpot.special_rounds_100,text:"Participate in 100 special rounds"}
  1208. ]);
  1209.  
  1210. document.getElementById('giveaway_table_btc').innerHTML = series_of_challenges([
  1211. {title:"Swordsman!",percent:tasks.btc.win_chest_one_swing.track?100:0,task:tasks.btc.win_chest_one_swing,text:"Break the chest containing at least 200F with just one sword swing"}
  1212. ]) + "<br>" + series_of_challenges([
  1213. {title:"Hollow Chest",percent:tasks.btc.witness_1HP_chest.track?100:0,task:tasks.btc.witness_1HP_chest,text:"Participate in a round where the chest has 1HP when it could have had at least 100HP"},
  1214. ])+ "<br>" + series_of_challenges([
  1215. {title:"Sturdy Chest",percent:tasks.btc.witness_1000HP_chest.track?100:0,task:tasks.btc.witness_1000HP_chest,text:"Participate in a round where the chest has at least 1000HP"},
  1216. ])
  1217.  
  1218. document.getElementById('giveaway_table_coinflip').innerHTML = series_of_challenges([
  1219. {title:"Coin Connoisseur",percent:replaceAll(tasks.coinflip.play_as_every_coin_track,"0","").length/30,task:tasks.coinflip.play_as_every_coin,text:"Play at least once as every coin"},
  1220. {title:"Coin Connoisseur II",percent:replaceAll(tasks.coinflip.win_as_every_coin_track,"0","").length/30,task:tasks.coinflip.win_as_every_coin,text:"Win at least once as every coin"}
  1221. ]) + "<br>" + series_of_challenges([
  1222. {title:"Coinflip Hijacker",percent:tasks.coinflip.joined_rooms/100,task:tasks.coinflip.join_100_rooms,text:"Join 100 Rooms"},
  1223. {title:"Coinflip Hijacker II",percent:tasks.coinflip.joined_rooms/1000,task:tasks.coinflip.join_1000_rooms,text:"Join 1000 Rooms"}
  1224. ])
  1225. }
  1226.  
  1227. function minutesToMsg(mtime){
  1228. if(mtime <= 0)return "now"
  1229. var num = 0;
  1230. var count = 0;
  1231. var timetype = [31536000000,2592000000,604800000,86400000,3600000,60000,1000];
  1232. var timeid = ["year","month","week","day","hour","minute","second"];
  1233. var string = "";
  1234. mtime = Math.ceil(mtime/1000)*1000
  1235. for(var x = 0; x<timetype.length; x++){
  1236. if(mtime>=timetype[x]){
  1237. count++
  1238. num = (mtime/timetype[x]);
  1239. var num2 = Math.floor(num);
  1240. var dec = (num%1);
  1241. mtime = Math.ceil(dec*timetype[x]);
  1242. if(count<4){
  1243. var plural = "s"
  1244. if(num<2){
  1245. plural = ""
  1246. }
  1247. if(count==2&&mtime>=500){
  1248. string+= ", "
  1249. }
  1250. if(count==2&&mtime<=500){
  1251. string+=" and "
  1252. }
  1253. if(count==3){
  1254. string+= " and "
  1255. }
  1256. string += num2.toString() + " " + timeid[x] + plural
  1257. }
  1258. }
  1259. }
  1260. return string
  1261. }
  1262.  
  1263. function add_progression_bar_snip2(percentage,text){
  1264. return '<div style="position:absolute;width:50%;right:5%;display: inline-block;"><div class="task_progressbar"><div class="task_prenup">'+text+'</div><div class="task_progressbar progression_bar" style="width:'+Math.min(percentage*100,100)+'%;"></div></div></div>'
  1265. }
  1266. function add_task_title_snip2(title,complete){
  1267. return complete==true? ('<div><div class="task_title" style="color:#22aa22;">'+title+'</div>') :('<div><div class="task_title">'+title+'</div>');
  1268. }
  1269. function add_task_prize_snip(task){
  1270. var itemSnip = "";
  1271. var sumF = 0;
  1272. for(var i in task.items){
  1273. itemSnip+=' <div class="item task_item" style="background-image:url(\''+items[window.id_to_pos(i)].image.src+'\')">'+task.items[i]+'</div>';
  1274. sumF += items[window.id_to_pos(i)].val * task.items[i];
  1275. }
  1276. var chooseImageT = (itemSnip=="") ? "/client/resources/CChest2.png" : ((sumF >= 2000 || task.KK>=200) ? "/client/resources/CChest3.png" : (sumF >= 400 ? "/client/resources/CChest1.png" : "/client/resources/CChest4.png"));
  1277. return '<div class="task_prize_hover" style="background-image:url(\''+chooseImageT+'\')"><div class="task_prize_tooltip">'+ itemSnip + (task.KK==0?'':('<div class="task_KK">'+ task.KK +'KK</div>')) +'</div></div></div><br>';
  1278. }
  1279.  
  1280. function highest_quant(low,high,KKALLOWED,ITEMID){
  1281. if(low == high){
  1282. return low
  1283. }else{
  1284. medium = Math.ceil((low+high)/2);
  1285. price_to_compare = Number((Math.round(FtoKK(items[window.id_to_pos(ITEMID)].val,medium)*medium*10)/10).toFixed(1))
  1286. if(price_to_compare > KKALLOWED){
  1287. return highest_quant(low,medium-1,KKALLOWED,ITEMID);
  1288. }else{
  1289. return highest_quant(medium,high,KKALLOWED,ITEMID);
  1290. }
  1291. }
  1292. }
  1293.  
  1294. var cachedMules = {cache:[],filtered:[]};
  1295. socket.on('getPossibleMules',function(muleList){
  1296. document.getElementById('withdraw_mules_listed').innerHTML = "";
  1297. if(muleList.length == 0){
  1298. document.getElementById('withdraw_mules_listed').innerHTML = "<div id='iw-no-mules'>There are no available mules that you can withdraw.<br/>You should use regular withdrawals instead.</div>";
  1299. }else{
  1300. for(var x in muleList)muleList[x].items.sort(function(a,b){return b-a});
  1301. cachedMules.cache = muleList.slice();
  1302. for(var x in cachedMules.cache){
  1303. var total = 0;
  1304. for(var y in cachedMules.cache[x].items)total += items[window.id_to_pos(cachedMules.cache[x].items[y])].val;
  1305. cachedMules.cache[x].sortby = {F:total,il:cachedMules.cache[x].items.length}
  1306. }
  1307. cachedMules.filtered = cachedMules.cache.slice();
  1308. filterCachedMules();
  1309. sortCachedMules();
  1310. $('#withdraw_mules_listed').html(iwpage(1));
  1311. }
  1312.  
  1313. });
  1314. $("#iw-page-left").on('click',function(){
  1315. $('#withdraw_mules_listed').html(iwpage(parseInt($("#withdraw_mules_listed").attr("page"))-1));
  1316. })
  1317. $("#iw-page-right").on('click',function(){
  1318. $('#withdraw_mules_listed').html(iwpage(parseInt($("#withdraw_mules_listed").attr("page"))+1));
  1319. })
  1320. $("div").on("click", "button.withdraw_mule_button", function(){
  1321. $(this).prop("disabled",true);
  1322. $(this).css("background-color","#222");
  1323. $(this).text("Hold on...");
  1324. socket.emit('withdraw_mule',$(this).attr('email'))
  1325. });
  1326.  
  1327. function iwpage(p){
  1328. $("#iw-page-left").prop("disabled",true);
  1329. $("#iw-page-left").css("background-color","#222");
  1330. $("#iw-page-right").prop("disabled",true);
  1331. $("#iw-page-right").css("background-color","#222");
  1332. if(p==0){
  1333. return "<div id='iw-wait'>Checking for possible mules...</div>"
  1334. }else{
  1335. $("#withdraw_mules_listed").attr('page', p);
  1336. if(cachedMules.filtered.length > 0){
  1337. data = "";
  1338. for(var i = 50*(p-1); i < Math.min(cachedMules.filtered.length,50*p); i++){
  1339. data+="<li style='position: relative;border-bottom:solid 1px white;'><div style='width:82%;left:0px;'>"
  1340. for(var j in cachedMules.filtered[i].items){
  1341. data += "<div class='item' style='background-image:url("+ items[window.id_to_pos(cachedMules.filtered[i].items[j])].image.src +");background-size: contain;width:40px;height:40px;'></div>"
  1342. }
  1343. data+="</div><div style='position:absolute;width:16%;right:0px;top:0px;bottom:0px;'>"
  1344. data+='<button type="button" email="'+cachedMules.filtered[i].email+'" class="new-menu-button withdraw_mule_button">Withdraw</button>';
  1345. data+='</div><div class="withdraw_mule_reply"></div></li>';
  1346. }
  1347. if(p>1){
  1348. $("#iw-page-left").prop("disabled",false);
  1349. $("#iw-page-left").removeAttr('style');
  1350. }
  1351. if(cachedMules.filtered.length > 50*p){
  1352. $("#iw-page-right").prop("disabled",false);
  1353. $("#iw-page-right").removeAttr('style');
  1354. }
  1355. $("#iw-page").html("Page " + p + " / " + Math.ceil(cachedMules.filtered.length/50));
  1356. return data;
  1357. }else{
  1358. $("#iw-page").html("Page 0 / 0");
  1359. return "<div id='iw-no-mules-filtered'>There are no mules with your filter.</div>";
  1360. }
  1361. }
  1362. }
  1363.  
  1364. $("#withdrawSearch").on('keyup', function (e) {
  1365. if(e.keyCode == 13){
  1366. filterCachedMules();
  1367. sortCachedMules();
  1368. $('#withdraw_mules_listed').html(iwpage(1));
  1369. }
  1370. });
  1371.  
  1372.  
  1373. socket.on('withdraw_mule_reply',function(email,reply,allGood,Canceldisable){
  1374. $(".withdraw_mule_button").each(function(){
  1375. if($(this).attr('email') == email){
  1376. if(!Canceldisable){
  1377. $(this).css("display","none");
  1378. }else{
  1379. $(this).prop("disabled",false);
  1380. $(this).removeAttr('style');
  1381. $(this).html("Withdraw");
  1382. }
  1383. if(allGood){
  1384. $("#iw-mule-email").val(reply[0]);
  1385. $("#iw-mule-password").val(reply[1]);
  1386. $("#iw-withdraw-complete").css('display','block');
  1387. window.onresize();
  1388. var prevWithdrawn = localStorage.getItem("instant_withdrawn2") || "|" ;
  1389. prevWithdrawn = "|" + reply[0]+":"+reply[1] + prevWithdrawn
  1390. localStorage.setItem("instant_withdrawn2",prevWithdrawn);
  1391. }else{
  1392. var muleReply = $(this).parent().parent().children()[2];
  1393. muleReply.innerHTML = reply;
  1394. }
  1395. }
  1396. })
  1397. });
  1398.  
  1399. var withdrawalFree = 0;
  1400.  
  1401. socket.on('muleInfo',function(listofItems,errorBool){
  1402. document.getElementById('withdraw-wait').style.display = 'none';
  1403. document.getElementById('withdraw-error').style.color = '#00ff00'
  1404. if(errorBool){
  1405. withdrawalFree = listofItems.length;
  1406. document.getElementById('withdraw-items-insert').style.display = 'block';
  1407. document.getElementById('withdraw-owned-items').innerHTML = "";
  1408. document.getElementById('withdraw-chosen-items').innerHTML = "";
  1409. document.getElementById('withdraw-chosen-quant').innerHTML = withdrawalFree>0?("Choose " + withdrawalFree + " item" + (withdrawalFree==1?"":"s")):"No more space!";
  1410. for(var j in myInv.items){
  1411. if(myInv.items[j].quant>0){
  1412. block = "<div class='item wd_unchosen' style='position:relative;background-image:url("+ items[myInv.items[j].id].image.src +"); background-size: contain; '"
  1413. block += "itemid='"+ myInv.items[j].id +"' itemq='"+ myInv.items[j].quant +"'>"
  1414. block += "<div class='wdItemQuant'>"+myInv.items[j].quant+"</div>"
  1415. block += "</div>"
  1416. document.getElementById('withdraw-owned-items').innerHTML += block;
  1417. }
  1418. }
  1419. document.getElementById('withdraw-error2').innerHTML = "";
  1420. }else{
  1421. document.getElementById('withdraw-prompt').style.display = 'block';
  1422. document.getElementById('withdraw-error').style.color = '#ff0000'
  1423. document.getElementById('withdraw-error').innerHTML = listofItems;
  1424. document.getElementById('remove-withdrawal').style.display = listofItems.indexOf("You already have a pending withdrawal.") == 0?'block':'none';
  1425. if(listofItems.indexOf("You have removed your pending withdrawal") == 0){
  1426. document.getElementById('withdraw-error').style.color = '#00ff00';
  1427. document.getElementById('remove-withdrawal').style.display = 'none';
  1428. document.getElementById('withdrawal_hide_if_current').style.display = 'block';
  1429. }
  1430. }
  1431. });
  1432.  
  1433. document.getElementById('withdraw-submit2').addEventListener("click", function(evt){
  1434. var IDofITEMS = [];
  1435. list = document.getElementById('withdraw-chosen-items').getElementsByTagName('div');
  1436. for (var i = 0; i < list.length; i++)IDofITEMS.push(items[parseInt(list[i].getAttribute("itemid"))].id);
  1437. socket.emit('withdraw',document.getElementById('withdraw-user').value,document.getElementById('withdraw-pw').value,IDofITEMS);
  1438. document.getElementById('withdraw-items-insert').style.display = "none";
  1439. document.getElementById('withdraw-wait2').style.display = "block";
  1440. })
  1441.  
  1442. $(document).on('click', '.wd_unchosen', function() {
  1443. if(withdrawalFree > 0){
  1444. var itemID = parseInt($(this).attr('itemid'));
  1445. var itemQ = parseInt($(this).attr('itemq'));
  1446. if(keyDown[16]){
  1447. var bigQ = Math.min(itemQ,withdrawalFree);
  1448. if(itemQ-bigQ ==0){
  1449. $(this).remove();
  1450. }else{
  1451. $(this).attr("itemq",itemQ-bigQ)
  1452. $(this).html("<div class='wdItemQuant'>"+(itemQ-bigQ)+"</div>");
  1453. }
  1454. withdrawalFree-= bigQ;
  1455. document.getElementById('withdraw-chosen-quant').innerHTML = withdrawalFree>0?("Choose " + withdrawalFree + " item" + (withdrawalFree==1?"":"s")):"No more space!";
  1456. for(var i = 0; i < bigQ; i++)document.getElementById('withdraw-chosen-items').innerHTML += "<div class='item wd_chosen' itemid='"+ itemID +"' style='position:relative;background-image:url("+ items[itemID].image.src +"); background-size: contain;'></div>";
  1457. }else{
  1458. if(itemQ==1){
  1459. $(this).remove();
  1460. }else{
  1461. $(this).attr("itemq",itemQ-1)
  1462. $(this).html("<div class='wdItemQuant'>"+(itemQ-1)+"</div>");
  1463. }
  1464. withdrawalFree--;
  1465. document.getElementById('withdraw-chosen-quant').innerHTML = withdrawalFree>0?("Choose " + withdrawalFree + " item" + (withdrawalFree==1?"":"s")):"No more space!";
  1466. document.getElementById('withdraw-chosen-items').innerHTML += "<div class='item wd_chosen' itemid='"+ itemID +"' style='position:relative;background-image:url("+ items[itemID].image.src +"); background-size: contain;'></div>";
  1467. }
  1468. return;
  1469. }
  1470. })
  1471. $(document).on('click', '.wd_chosen', function() {
  1472. var itemID = parseInt($(this).attr('itemid'));
  1473. $(this).remove();
  1474. withdrawalFree++;
  1475. document.getElementById('withdraw-chosen-quant').innerHTML = withdrawalFree>0?("Choose " + withdrawalFree + " items"):"No more space!";
  1476. list = document.getElementById('withdraw-owned-items').getElementsByTagName('div');
  1477. for (var i = 0; i < list.length; i++) {
  1478. var iD = parseInt(list[i].getAttribute("itemid"));
  1479. if(iD == itemID){
  1480. var iQ = parseInt(list[i].getAttribute("itemq"));
  1481. list[i].setAttribute("itemq", iQ+1);
  1482. list[i].innerHTML = "<div class='wdItemQuant'>"+(iQ+1)+"</div>";
  1483. return;
  1484. }
  1485. }
  1486. document.getElementById('withdraw-owned-items').innerHTML += "<div class='wd_unchosen item' style='position:relative;background-image:url("+ items[itemID].image.src +"); background-size: contain; 'itemid='"+ itemID +"' itemq='1'><div class='wdItemQuant'>1</div></div>";
  1487. })
  1488.  
  1489. socket.on('change_password_reply',function(reply,errorBool){
  1490. document.getElementById('changepw-error').style.color = errorBool?'#00ff00':'#ff0000';
  1491. document.getElementById('changepw-error').innerHTML = reply;
  1492. document.getElementById('changepw-button').style.display = 'block';
  1493. });
  1494.  
  1495.  
  1496. socket.on('withdrawResult',function(err,bool){
  1497. document.getElementById('withdraw-wait2').style.display = "none";
  1498. if(bool){
  1499. document.getElementById('withdraw-done').style.display = "block";
  1500. }else{
  1501. document.getElementById('withdraw-items-insert').style.display = "block";
  1502. document.getElementById('withdraw-error2').innerHTML = err;
  1503. }
  1504.  
  1505. });
  1506.  
  1507. socket.on('codereply',function(msg,allGood,contents){
  1508. if(!allGood){
  1509. document.getElementById('redeem-code-reply').innerHTML = msg;
  1510. }else{
  1511. openChest(contents);
  1512. document.getElementById('redeem-code-reply').innerHTML = "Enjoy your loot!";
  1513. }
  1514. });
  1515.  
  1516. socket.on('refer_reply',function(accounts){
  1517. document.getElementById("information-refer-rate").innerHTML = "You will gain 1KK for every "+siteranks[round.rank].refKK+"F your referrals wager! You can refer people by getting them to enter your OJ username on sign-up! You can spread the following URL to help: <input type='text' readonly='readonly' class='copy-paste-field' style='width: 80%;' value='https://oryxjackpot.com/?r="+round.name+"'/>";
  1518. if(accounts.length == 0){
  1519. document.getElementById("referral_info").innerHTML = '<span class="bigger-font">Looks like you haven\'t referred anyone yet!</span>';
  1520. }else{
  1521. var block = "";
  1522. for(var acc in accounts){
  1523. block += '<tr>'
  1524. block += '<td class="refer_info_img" style="background-image:url(\''+ window.escapeHtml(accounts[acc].img) +'\');"></td>'
  1525. block += '<td style="color:'+accounts[acc].rankcolor+';">' + window.escapeHtml(accounts[acc].username)+'</td>'
  1526. var amntOfDays = Math.floor((Date.now() - accounts[acc].lastAction)/(1000*60*60*24));
  1527. block += '<td>' + (amntOfDays==0?'Recently active!':amntOfDays + ' day(s) ago.') + '</td>'
  1528. block += '<td style="color:#ff7700;">' + accounts[acc].totalWagered+'F</td>'
  1529. block += '</tr>'
  1530. }
  1531. document.getElementById("referral_info").innerHTML = '<table class="refer_info_table"><tr><td></td><td>Player</td><td>Last Seen</td><td>Total Wagered</td></tr>'+block+'</table>';
  1532. }
  1533. });
  1534.  
  1535. $(".info-holder").on("click", "button.new-menu-button.infotab-collapsable", function(){
  1536. var infoTab = $(this).parent().children("span")[0];
  1537. $(this).parent().toggleClass("open-info-collapse");
  1538. if(infoTab.style.display == 'block')infoTab.style.display = 'none';
  1539. else infoTab.style.display = 'block';
  1540. });
  1541.  
  1542. socket.on('information',function(faq,ch,rul,tos,emojis,clrs,siterankz){
  1543. siteranks = siterankz;
  1544. var siteRdescs = {
  1545. maxspace:["Inventory Cap","The number of items you can hold before you are unable to deposit or cancel withdrawals."],
  1546. depwait:["Deposit Cooldown","The amount of minutes you must wait before doing another deposit."],
  1547. withwait:["Withdrawal Cooldown","The amount of minutes you must wait before doing another withdrawal."],
  1548. commission:["Round Tax","The percentage of profit the site may take as tax from the winner."],
  1549. refKK:["Referral Rewards","The amount of F a referral must wager for you to earn 1KK."],
  1550. discount:["KK Item Shop Discount","The percentage of the price discounted from the KK Item Shop."],
  1551. freeDepos:["Daily Free Deposits","The amount of daily deposits that will not apply a cooldown after success."],
  1552. price:["Price","How much it costs to buy the rank in USD."]
  1553. }
  1554. document.getElementById("emojimenu").innerHTML = "";
  1555. $('#test-rank-info').html("Purchasing ranks help Oryxjackpot continue to develop and provide our service. Oryxjackpot ranks provide perks that enhance your experience on Oryxjackpot!<table id='kk-ranks-table'></table>");
  1556.  
  1557. var rankKeys = Object.keys(siterankz[0]);
  1558. for(var i = 0; i < siterankz.length-1; i++){
  1559. $('#emojimenu').append("<div class='emojiBar'>" + (siteranks[i].title==""?"Free":siteranks[i].title) + "</div>");
  1560. for(var emoj in emojis[i]){
  1561. var divemoji = document.createElement("div");
  1562. divemoji.className += 'getemoji';
  1563. divemoji.setAttribute("title", emoj);
  1564. divemoji.style.backgroundImage = "url('"+emojis[i][emoj];+"')"
  1565. document.getElementById("emojimenu").appendChild(divemoji);
  1566. }
  1567. $('#emojimenu').append("<div class='emojiBar' style='height:10px'></div>");
  1568. }
  1569. for(var y in rankKeys){
  1570. if(rankKeys[y] != "name" && rankKeys[y] != "namecolor" ){
  1571. var rankBlock = "<tr class='kk-table-row'>";
  1572.  
  1573. if(rankKeys[y] in siteRdescs)rankBlock+= "<td class='kk-table-padding'>"+siteRdescs[rankKeys[y]][0]+"<br><span style='font-size:0.6em;font-family:\"Arial\"'>"+siteRdescs[rankKeys[y]][1]+"</span></td>";
  1574. else if(rankKeys[y] == "linktobuy") rankBlock+= "<td>Buy this rank!</td>";
  1575. else rankBlock+= "<td></td>";
  1576.  
  1577. for(var i = 0; i < siterankz.length-1; i++){
  1578. if(rankKeys[y] == "title"){
  1579. if(i==0)rankBlock += "<td style='color:"+siterankz[i].namecolor+"'>Free</td>";
  1580. else rankBlock += "<td style='color:"+siterankz[i].namecolor+"'>"+siterankz[i][rankKeys[y]]+"</td>";
  1581. }
  1582. else if(rankKeys[y] == "discount") rankBlock += "<td>"+ siterankz[i][rankKeys[y]]*100 +"%</td>";
  1583. else if(rankKeys[y] == "depwait" || rankKeys[y] == "withwait") rankBlock += "<td>"+ (siterankz[i][rankKeys[y]]==0?"None!":siterankz[i][rankKeys[y]]+" mins") +"</td>";
  1584. else if(rankKeys[y] == "commission") rankBlock += "<td>"+ (siterankz[i][rankKeys[y]]==0?"None!":siterankz[i][rankKeys[y]]+"%") + "</td>";
  1585. else if(rankKeys[y] == "freeDepos" && i==3) rankBlock += "<td>N/A</td>";
  1586. else if(rankKeys[y] == "price") rankBlock += "<td>$"+ siterankz[i][rankKeys[y]] +"</td>";
  1587. else if(rankKeys[y] == "linktobuy" && i>0) rankBlock += "<td><a href='"+ siterankz[i][rankKeys[y]] +"' target='_blank' style='color:"+siterankz[i].namecolor+"'>Buy!</a></td>";
  1588. else rankBlock += "<td>"+siterankz[i][rankKeys[y]]+"</td>";
  1589. }
  1590. document.getElementById("kk-ranks-table").innerHTML += rankBlock + "<tr>";
  1591. }
  1592. }
  1593. $('#test-rank-info').html($('#test-rank-info').html() + "<br>All ranks last for 14 days as soon as the rank is redeemed.<br> We only accept PayPal for now, but you can contact KoolKash on Discord for other payment methods, such as Steam, Amazon, and Crypto!");
  1594.  
  1595. $( 'div.getemoji' ).click(function(){
  1596. $("#message").val( $("#message").val() + $(this).attr('title') );
  1597. $('#message').focus();
  1598. $(".menu").slideToggle(1);
  1599. });
  1600. document.getElementById("information-FAQ").innerHTML = "";
  1601. document.getElementById("information-rules").innerHTML = "";
  1602. document.getElementById("information-logs").innerHTML = "";
  1603. document.getElementById("information-tos").innerHTML = "";
  1604. for(var k=0;k<faq.length;k++)document.getElementById("information-FAQ").innerHTML += '<li class="infotab-box"><button class="new-menu-button infotab-collapsable">'+faq[k].title+'</button><span class="infotab-collapse-info">'+faq[k].desc.replace(/\\/g,'</br>')+'</span></li>';
  1605. for(var k=0;k<rul.length;k++)document.getElementById("information-rules").innerHTML += '<li class="info-other-box"><span style="font-size:1.5em">'+ rul[k].rule+"</span></br><span>" + rul[k].minor + "</span></br><span style='color:#ff3333;font-size: 0.8em;'>"+ rul[k].punish.replace(/\\/g,'</br>')+'</span></li>';
  1606. for(var k=0;k<ch.length;k++)document.getElementById("information-logs").innerHTML += '<li class="info-other-box"><span style="font-size:1.5em">'+ ch[k].version+"</span></br><ul class='changelogs-list'><li>" + ch[k].text.replace(/\\/g,'</li><li>') + "</li></ul></li>";
  1607. for(var k=0;k<tos.length;k++)document.getElementById("information-tos").innerHTML += '<li class="info-other-box"><span style="font-size:1.5em">'+ tos[k].title+"</span></br>" + tos[k].desc + "</li>";
  1608. document.getElementById("information-tos-signup").innerHTML = document.getElementById("information-tos").innerHTML + "<br><button type='button' class='new-menu-button' id='tos-signup-accept' onclick='window.acceptTOS();'>Accept</button>"
  1609.  
  1610. block= "";
  1611. for(var k=0;k<clrs.length;k++){
  1612. block += "<div class='kk-colors-box' style='border-color:"+clrs[k].color+";color:"+clrs[k].color+";animation:"+clrs[k].animation+"'><div style='position:absolute;left:2px;top:4px;right:2px;bottom:41%;font-size:2.2vw;'>"+clrs[k].name +"; "+ clrs[k].desc+"</div><button type='button' class='kk-colors-buy' price='"+clrs[k].price+"' id='"+k+"'>Buy<br><span style='font-size:0.7em'>Price: "+clrs[k].price+"KK</span></button></div>"
  1613. }
  1614. document.getElementById("test-colors-info").innerHTML = block;
  1615.  
  1616. $( '.kk-colors-buy' ).click(function(){
  1617. $(this).prop("disabled",true);
  1618. $(this).css("background-color","#333");
  1619. socket.emit('buy_color',parseInt($(this).attr('id')))
  1620. });
  1621.  
  1622. if(localStorage.getItem("information")!==undefined){
  1623. newChLogs = ch.length - localStorage.getItem("information");
  1624. if(newChLogs > 0){
  1625. for(var k=0;k<newChLogs;k++){
  1626. var block= '<li class="chat-message-box" style>'+'<span class="chat-message-text">'+'<span style="font-size:34px">'
  1627. block+= ch[k].version;
  1628. block+= '</span>'+'</br><ul><li>';
  1629. block+= ch[k].text.replace(/\\/g,'</li></br><li>');;
  1630. block+= '</li></ul></span>'+'</li>';
  1631. document.getElementById("information-prompt-logs").innerHTML += block;
  1632. }
  1633. document.getElementById("information-prompt").style.display = 'block';
  1634. }
  1635. localStorage.setItem("information",ch.length);
  1636. }else{
  1637. localStorage.setItem("information",ch.length);
  1638. }
  1639.  
  1640. });
  1641.  
  1642. socket.on('playercount',function(count){
  1643. document.getElementById("guest_viewer").innerHTML = count;
  1644. });
  1645. socket.on('specialround',function(s){
  1646. round.special = s;
  1647. });
  1648.  
  1649. socket.on('buy_color_response',function(response,id){
  1650. $( '.kk-colors-buy' ).each(function(){
  1651. if(parseInt($(this).attr('id')) == id){
  1652. var thisEle = $(this);
  1653. thisEle.html("<span style='font-size:0.8em'>"+response+"</span>");
  1654. setTimeout(function(){
  1655. thisEle.prop("disabled",false);
  1656. thisEle.css("background-color","#171");
  1657. thisEle.html("Buy<br><span style='font-size:0.7em'>Price: "+ thisEle.attr('price') +"KK</span>")
  1658. },3000)
  1659.  
  1660. }
  1661. });
  1662. })
  1663.  
  1664. socket.on('timer',function(dateNow,timeLeft,timeLeft2){
  1665. round.timer = timeLeft + (Date.now() - dateNow);
  1666. round2.timer = timeLeft2 + (Date.now() - dateNow);
  1667. });
  1668.  
  1669. socket.on('winnerA',function(hash,chance,victory,vol,positions){
  1670. round.victorysfx = new Audio(victory == "" ?"client/sfx/Enter_realm.oga":victory);
  1671. round.victorysfx.volume = vol||0.3;
  1672. round.winner = chance;
  1673. round.hash = hash;
  1674. round.imageroll = positions;
  1675. round.endstart = Date.now();
  1676. round.rollwin = true;
  1677. if(gamemode==1)document.getElementById('switch-gamemodes-notif').style.display = "none";
  1678. else $("#game-submit").addClass('ending');
  1679. });
  1680. socket.on('winnerB',function(hash,chance,victory,vol,seq){
  1681. round2.victorysfx = new Audio(victory == "" ?"client/sfx/Enter_realm.oga":victory);
  1682. round2.victorysfx.volume = vol||0.3;
  1683. round2.winner = chance;
  1684. round2.hash = hash;
  1685. round2.attacks = seq;
  1686. round2.rollwin = true;
  1687. round2.cloneWagers = round2.wagers.slice();
  1688. round2.win_init();
  1689. if(gamemode==0)document.getElementById('switch-gamemodes-notif').style.display = "none";
  1690. else $("#game-submit").addClass('ending');
  1691. });
  1692.  
  1693. var resetSettings = {p:9,v:100}
  1694.  
  1695. socket.on('reset1',function(random){
  1696. round.wagers = [];
  1697. round.p = 0;
  1698. round.victorysfx.pause();
  1699. if(gamemode==0){
  1700. wagerscroll.offsety = 0;
  1701. $("#game-submit").removeClass('ending');
  1702. }
  1703. round.totalval = 0;
  1704. round.rollsfx = 0;
  1705. round.rollwin = false;
  1706. round.randomwin = random;
  1707.  
  1708. });
  1709. socket.on('reset2',function(random){
  1710. round2.wagers = [];
  1711. round2.victorysfx.pause();
  1712. round2.totalval = 0;
  1713. round2.rollwin = false;
  1714. round2.win_finished(1);
  1715. round2.updateWagers();
  1716. if(gamemode==1)$("#game-submit").removeClass('ending');
  1717. });
  1718.  
  1719. $("#message").on('keyup', function (e) {
  1720. if (e.keyCode == 13) {
  1721. var message = $(this).val();
  1722. if(message.length <= 200){
  1723. socket.emit("chat",message);
  1724. $(this).val("");
  1725. }
  1726. }
  1727. });
  1728.  
  1729. socket.on('chat',function(newChat){
  1730. if(newChat.length > 0){
  1731. chatWindow.innerHTML = "";
  1732. for(var i =0; i < newChat.length; i++){
  1733. chatWindow.innerHTML += add_new_chat(newChat[i])
  1734. }
  1735. $("#chat-window").animate({ scrollTop: $('#chat-window')[0].scrollHeight}, 1000);
  1736. }
  1737. });
  1738. function add_new_chat(newChat){
  1739. var block = '<li class="chat-message-box" style>' + '<img class="chat-message-image" src="'+ window.escapeHtml(newChat.image) +'">'
  1740. block += '<button class="chat-message-username" style="color:'+newChat.namecolor+'" name="'+window.escapeHtml(newChat.name)+'">'
  1741. block += emoji(newChat.icon)
  1742. block += (newChat.rank==5?"(Admin)":"") + window.escapeHtml(" "+ newChat.name + ":" ) +'</button>' + "<br>"+ '<span class="chat-message-text" style="animation:'+(newChat.animation||"none")+';color:'+newChat.color+'">'+newChat.msg+'</span></li>'
  1743. return block;
  1744. }
  1745.  
  1746. function replaceAll(str, term, replacement) {
  1747. return str.replace(new RegExp(escapeRegExp(term), 'g'), replacement);
  1748. }
  1749. function escapeRegExp(string){
  1750. return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
  1751. }
  1752.  
  1753. socket.on('newchat',function(newChat,type){
  1754.  
  1755. if(type == "player"){
  1756. if(chatWindow.childNodes.length > 50)chatWindow.removeChild(chatWindow.childNodes[0]);
  1757. newChat.msg = replaceAll(newChat.msg,"@"+round.name,"<mark>@"+round.name+"</mark>")
  1758. chatWindow.innerHTML += add_new_chat(newChat)
  1759.  
  1760. if(chatWindow.style.display == "block"){
  1761. if( ($("#chat-window")[0].scrollHeight - $("#chat-window")[0].scrollTop - $("#chat-window")[0].clientHeight) < 200){
  1762. $("#chat-window").animate({ scrollTop: $('#chat-window')[0].scrollHeight}, 400);
  1763. }
  1764. if(newChat.msg.indexOf("@"+round.name)>=0 && round.loggedin){
  1765. var newchatsfx = new Audio("client/sfx/Sprite_god_hit.oga");newchatsfx.volume = window.handleWindowMute(0.7);newchatsfx.play();
  1766. }else{
  1767. var newchatsfx = new Audio("client/sfx/Sprites_hit.oga");newchatsfx.volume = window.handleWindowMute(0.5);newchatsfx.play();
  1768. }
  1769. }
  1770. }else{
  1771. sitechatWindow.innerHTML += add_new_chat(newChat)
  1772. if(sitechatWindow.style.display == "block"){
  1773. if( ($("#chat-window-2")[0].scrollHeight - $("#chat-window-2")[0].scrollTop - $("#chat-window-2")[0].clientHeight) < 280){
  1774. $("#chat-window-2").animate({ scrollTop: $('#chat-window-2')[0].scrollHeight}, 700);
  1775. }
  1776. }
  1777. }
  1778.  
  1779. });
  1780.  
  1781. function emoji(img){return img==""?"":'<img draggable="false" class="emoji" src="'+img+'">'};
  1782.  
  1783. $("#chat-window").on("click", "button.chat-message-username", function(){
  1784. $("#message").val( $("#message").val() + "@" + $(this).attr('name') + " " );
  1785. $('#message').focus();
  1786. });
  1787.  
  1788. var siteranks = {}
  1789. socket.on('items',function(arr){
  1790. window.items = [];
  1791. for(var i = 0; i < arr.length; i++){
  1792. items[i]= new item(arr[i].img,arr[i].val,0,arr[i].name,arr[i].id);
  1793. myInv.items[i] = {id:i,quant:0};
  1794. }
  1795. //experimental
  1796. document.getElementById("sidebar_inv").innerHTML = "";
  1797. for(var i in arr){
  1798. document.getElementById("sidebar_inv").innerHTML += "<div class='item inv-i zero-stock' stock='0' itemid='"+arr[i].id+"' style='background-image:url(\""+arr[i].img+"\")'><div class='inv-i-quant'></div><div class='inv-i-val'>"+arr[i].val+"F</div></div>"
  1799. }
  1800. $("#sidebar_inv_worth").html("<span>INV</span><span style='float: right;color:#f70;'>0F</span>")
  1801. $("#offer_inv_worth").html("<span>WAGER</span><span style='float: right;color:#f70;'>0F</span>")
  1802. });
  1803. $("#sidebar_inv").on("click", ".inv-i", function(){
  1804. if($("#offer_inv").children().length < 8 && $("#offer_inv").css('display') == 'block'){
  1805. var stockN = parseInt($(this).attr('stock'));
  1806. if( stockN> 0){
  1807. var sfx = new Audio("client/sfx/Inventory_move_item.oga");sfx.volume = window.handleWindowMute(0.4);sfx.play();
  1808. $(this).attr('stock', stockN-1);
  1809. if(stockN == 1){
  1810. $(this).addClass("zero-stock");
  1811. if(myInv.filtered)$(this).css("display","none");
  1812. }
  1813. var eChildren = $(this).children();
  1814. for(var z =0;z< eChildren.length;z++){
  1815. if(eChildren[z].classList.contains("inv-i-quant")){
  1816. eChildren[z].innerHTML = stockN-1==0?"":stockN-1;
  1817. break;
  1818. }
  1819. }
  1820.  
  1821. $("#game-submit").addClass('has-items');
  1822. document.getElementById("offer_inv").innerHTML += "<div class='item offer-i' itemid='"+$(this).attr('itemid')+"' style='background-image:"+$(this).css('background-image')+"'><div class='inv-i-val'>"+items[window.id_to_pos(parseInt($(this).attr('itemid')))].val+"F</div></div>";
  1823. $("#sidebar_inv_worth").attr('val',parseInt($("#sidebar_inv_worth").attr('val')) - items[window.id_to_pos(parseInt($(this).attr('itemid')))].val ); //add to value text
  1824. $("#offer_inv_worth").attr('val',parseInt($("#offer_inv_worth").attr('val')) + items[window.id_to_pos(parseInt($(this).attr('itemid')))].val );
  1825. $("#sidebar_inv_worth").html("<span>INV</span><span style='float: right;color:#f70;'>"+$("#sidebar_inv_worth").attr('val')+"F</span>")
  1826. $("#offer_inv_worth").html("<span>WAGER</span><span style='float: right;color:#f70;'>"+$("#offer_inv_worth").attr('val')+"F</span>")
  1827. }
  1828. }
  1829. });
  1830. $('#sidebar_inv').bind('mousewheel', function(e){
  1831. if(e.originalEvent.wheelDelta /120 > 0) {
  1832. e.preventDefault();
  1833. keepTrackScroll-=1;
  1834. }else{
  1835. e.preventDefault();
  1836. keepTrackScroll+=1;
  1837. }
  1838. if(window.innerHeight >= window.innerWidth){
  1839. $('#sidebar_inv').scrollTop(keepTrackScroll*window.innerWidth*0.14/(1 + myInv.resize))
  1840. }else{
  1841. $('#sidebar_inv').scrollTop(keepTrackScroll*window.innerHeight*0.135/(1 + myInv.resize))
  1842. }
  1843.  
  1844. if(keepTrackScroll < 0){
  1845. keepTrackScroll = 0;
  1846. }else{
  1847. if(myInv.filtered){
  1848. var ownedcount = 0;
  1849. $('.inv-i').each(function(){
  1850. if($(this).css('display') == 'inline-block')ownedcount++;
  1851. })
  1852. if(keepTrackScroll > Math.ceil(ownedcount / (2 + 2*myInv.resize)) - myInv.resize-1){
  1853. keepTrackScroll = Math.ceil(ownedcount / (2 + 2*myInv.resize)) - myInv.resize-1;
  1854. }
  1855. }else{
  1856. if(keepTrackScroll > Math.ceil($('#sidebar_inv').children().length / (2 + 2*myInv.resize)) - myInv.resize-1){
  1857. keepTrackScroll = Math.ceil($('#sidebar_inv').children().length / (2 + 2*myInv.resize)) - myInv.resize-1;
  1858. }
  1859. }
  1860. }
  1861.  
  1862. return;
  1863. });
  1864. $("#offer_inv").on("click", ".offer-i", function(){
  1865. var thisOfferItem = $(this);
  1866. var sfx = new Audio("client/sfx/Inventory_move_item.oga");sfx.volume = window.handleWindowMute(0.4);sfx.play();
  1867. $( '.inv-i' ).each(function(){
  1868. if($(this).attr('itemid') == thisOfferItem.attr('itemid')){
  1869. var istock = parseInt($(this).attr('stock'));
  1870. if(istock == 0){
  1871. $(this).removeClass("zero-stock");
  1872. $(this).css('display','inline-block');
  1873. }
  1874. $(this).attr('stock',istock+1);
  1875. var eChildren = $(this).children();
  1876. for(var z =0;z< eChildren.length;z++){
  1877. if(eChildren[z].classList.contains("inv-i-quant")){
  1878. eChildren[z].innerHTML = istock+1;
  1879. break;
  1880. }
  1881. }
  1882. $("#sidebar_inv_worth").attr('val',parseInt($("#sidebar_inv_worth").attr('val')) + items[window.id_to_pos(parseInt($(this).attr('itemid')))].val ); //add to value text
  1883. $("#offer_inv_worth").attr('val',parseInt($("#offer_inv_worth").attr('val')) - items[window.id_to_pos(parseInt($(this).attr('itemid')))].val );
  1884. $("#sidebar_inv_worth").html("<span>INV</span><span style='float: right;color:#f70;'>"+$("#sidebar_inv_worth").attr('val')+"F</span>")
  1885. $("#offer_inv_worth").html("<span>WAGER</span><span style='float: right;color:#f70;'>"+$("#offer_inv_worth").attr('val')+"F</span>")
  1886.  
  1887. thisOfferItem.remove();
  1888.  
  1889. if($("#offer_inv").children().length == 0){
  1890. $("#game-submit").removeClass("has-items");
  1891. }
  1892. }
  1893. });
  1894. });
  1895.  
  1896. socket.on('wagers',function(arr,arr2,siteranks){
  1897. for(var i = 0; i < arr.length; i++)round.wagers.push(new wager(arr[i].wage,arr[i].worth,arr[i].name,arr[i].image,round.wagers.length,siteranks[arr[i].rank].namecolor,arr[i].color) );
  1898. for(var i = 0; i < arr2.length; i++){
  1899. round2.wagers.push(new wager(arr2[i].wage,arr2[i].worth,arr2[i].name,arr2[i].image,round2.wagers.length,siteranks[arr2[i].rank].namecolor,arr2[i].color) );
  1900. var data = "<div class='gm1_wager'><img src='"+arr2[i].image+"' class='gm1_wager_img'/><div class='gm1_wager_info' style='color:"+siteranks[arr2[i].rank].namecolor+"'>"+window.escapeHtml(arr2[i].name)+"</div><div class='gm1_wager_info' type='wager_percent' name='"+window.escapeHtml(arr2[i].name)+"' style='top:30%'></div><div class='gm1_wager_info' style='top:60%;height:40%;'><div style='position:relative;width:100%;height:100%'>";
  1901. for(var x in arr2[i].wage)data+="<img class='gm1_wager_item' src='"+items[window.id_to_pos(arr2[i].wage[x])].image.src+"' />"
  1902. document.getElementById("gm1_wagers_table").innerHTML += data + "</div></div></div>";
  1903. }
  1904. round2.updateWagers();
  1905. round2.updateWagersInfo();
  1906. });
  1907. socket.on('newwager',function(newWag){
  1908. round.wagers[newWag.id] = new wager(newWag.wage,newWag.worth,newWag.name,newWag.image,newWag.id,siteranks[newWag.rank].namecolor,newWag.color)
  1909. if(gamemode==0){var sfx = new Audio("client/sfx/Loot_appears.oga");sfx.volume = window.handleWindowMute(0.4);sfx.play();}
  1910. if(gamemode!=0 && round.wagers.length == 1)document.getElementById('switch-gamemodes-notif').style.display = "block";
  1911. });
  1912. socket.on('newwager2',function(newWag){
  1913. round2.wagers[newWag.id] = new wager(newWag.wage,newWag.worth,newWag.name,newWag.image,newWag.id,siteranks[newWag.rank].namecolor)
  1914. if(gamemode==1){var sfx = new Audio("client/sfx/Loot_appears.oga");sfx.volume = window.handleWindowMute(0.4);sfx.play();}
  1915. if(gamemode!=1 && round2.wagers.length == 1)document.getElementById('switch-gamemodes-notif').style.display = "block";
  1916. var data = "<div class='gm1_wager'><img src='"+newWag.image+"' class='gm1_wager_img'/><div class='gm1_wager_info' style='color:"+siteranks[newWag.rank].namecolor+"'>"+window.escapeHtml(newWag.name)+"</div><div class='gm1_wager_info' type='wager_percent' name='"+window.escapeHtml(newWag.name)+"' style='top:30%'></div><div class='gm1_wager_info' style='top:60%;height:40%;'><div style='position:relative;width:100%;height:100%'>";
  1917. for(var x in newWag.wage)data+="<img class='gm1_wager_item' src='"+items[window.id_to_pos(newWag.wage[x])].image.src+"' />"
  1918. document.getElementById("gm1_wagers_table").innerHTML += data + "</div></div></div>";
  1919. round2.updateWagers();
  1920. round2.updateWagersInfo();
  1921. });
  1922. socket.on('inventory',function(arr){
  1923. process_inv(arr);
  1924. });
  1925.  
  1926. function process_inv(arr){
  1927. myInv.items = [];
  1928. var cloneoffer = [];
  1929. for(var i = 0; i < items.length; i++){
  1930. myInv.items[i] = {id:i,quant:0};
  1931. }
  1932. for(var i in arr){
  1933. if(arr[i].quant>0){
  1934. myInv.add(window.id_to_pos(arr[i].id),arr[i].quant);
  1935. }
  1936. }
  1937. for(var i in cloneoffer){
  1938. myInv.add(cloneoffer[i].id,-1);
  1939. }
  1940. socket.emit('ask_for_tasks');
  1941.  
  1942. //experimental
  1943. $( '.inv-i' ).each(function(){
  1944. $(this).addClass('zero-stock');
  1945. $(this).attr('stock',0);
  1946. if(myInv.filtered)$(this).css('display','none');
  1947. else $(this).css('display','inline-block');
  1948. var eChildren = $(this).children();
  1949. for(var z =0;z< eChildren.length;z++){
  1950. if(eChildren[z].classList.contains("inv-i-quant")){
  1951. eChildren[z].innerHTML = "";
  1952. break;
  1953. }
  1954. }
  1955. });
  1956.  
  1957. var temp = [];
  1958. $( '.offer-i' ).each(function(){
  1959. temp.push($(this).attr('itemid'));
  1960. });
  1961. var totalF = 0;
  1962.  
  1963. $( '.inv-i' ).each(function(){
  1964. for(var h in arr){
  1965. if(parseInt($(this).attr('itemid')) == arr[h].id){
  1966. var quanti = arr[h].quant;
  1967. for(var m in temp){
  1968. if(temp[m] == $(this).attr('itemid'))quanti-=1;
  1969. }
  1970. $(this).attr('stock',quanti)
  1971. if(quanti>0){
  1972. $(this).removeClass("zero-stock");
  1973. $(this).css('display','inline-block');
  1974. }
  1975. totalF += quanti*items[window.id_to_pos(arr[h].id)].val;
  1976. var eChildren = $(this).children();
  1977. for(var z =0;z< eChildren.length;z++){
  1978. if(eChildren[z].classList.contains("inv-i-quant")){
  1979. eChildren[z].innerHTML = quanti==0?"":quanti;
  1980. break;
  1981. }
  1982. }
  1983. break;
  1984. }
  1985. }
  1986. });
  1987. $("#sidebar_inv_worth").attr('val',totalF)
  1988. $("#sidebar_inv_worth").html("<span>INV</span><span style='float: right;color:#f70;'>"+totalF+"F</span>")
  1989. //$("#offer_inv_worth").html("<span>WAGER</span><span style='float: right;color:#f70;'>0F</span>")
  1990.  
  1991. }
  1992.  
  1993. window.id_to_pos = function(id){
  1994. for(var k in items)if(items[k].id == id)return k;
  1995. return -1;
  1996. }
  1997.  
  1998. socket.on('signup',function(reply){
  1999. document.getElementById('signup-error').style.color = reply.indexOf("Success!")!=-1?"#99ff99":"#ff9999";
  2000. document.getElementById('signup-error').innerHTML = reply;
  2001. });
  2002.  
  2003. socket.on('signin',function(reply,rotmgign){
  2004. if(rotmgign == "unverified")window.onlyOpenOneWindow('verify-code');
  2005. document.getElementById('login-error').innerHTML = reply;
  2006. document.getElementById('login-submit').style.display = 'block';
  2007. });
  2008.  
  2009. function FtoKK(F,Q){
  2010. return ((0.2333*(F-4.5)) +4.95 + (10 - 0.05*Math.abs(F - 200)))*(1-siteranks[round.rank].discount)*(0.15/(1 + Q/6) + 0.85)
  2011. }
  2012.  
  2013. function boxedText(OBJ){
  2014. var options = OBJ;
  2015. options.msg = String(OBJ.msg)||" ";
  2016. options.texth = Math.min(Math.floor(OBJ.texth)||20,Math.floor(OBJ.h));
  2017. options.font = OBJ.font||"";
  2018. options.color = OBJ.color||'#ffffff';
  2019. if(options.alignH===undefined)options.alignH=0.5;
  2020. if(options.alignW===undefined)options.alignW=0.5;
  2021. var lines = [];
  2022. var word = "";
  2023. for(var k = options.texth;k>1;k--){
  2024. options.texth = k;
  2025. lines = [];
  2026. lines[0]="";
  2027. word = "";
  2028. ctx.font = options.font+' '+options.texth+"px Arial";
  2029. for(var i = 0; i < options.msg.length; i++){
  2030. if(options.msg[i]!==" "&&options.msg[i]!=="\\"&& i!=options.msg.length-1){//a letter AND not the last letter
  2031. word += options.msg[i];
  2032. }else{ //space or last letter
  2033. if(options.msg[i]!="\\"){
  2034. if( ctx.measureText(lines[lines.length-1] + word + (options.msg[i]==" "?"":options.msg[i]) ).width > options.w && ((options.texth+4)*(lines.length+1) -4) <= options.h){
  2035. lines.push(word + options.msg[i]);
  2036. }else{
  2037. lines[lines.length-1] += word + options.msg[i];
  2038. }
  2039. }else{
  2040. lines[lines.length-1] += word
  2041. lines.push("");
  2042. }
  2043. word = "";
  2044. }
  2045. }
  2046. var blockh = ((options.texth+4)*(lines.length) -4);
  2047. var blockw = ctx.measureText(lines[0]).width;
  2048. for(var i = 1; i < lines.length; i++)blockw = Math.max(ctx.measureText(lines[i]).width,blockw);
  2049. ////// Calc the w and h of the text block, make sure it stays inside.
  2050. if( blockh <= options.h && blockw <= options.w)break;
  2051. }
  2052. ctx.fillStyle = options.color;
  2053. for(var i = 0; i < lines.length; i++){
  2054. console.log('fill text', lines[i])
  2055. ctx.fillText(lines[i],options.x + (options.w-blockw)*options.alignW, options.y + blockh + (options.h - blockh*1.055)*options.alignH - ((options.texth+4)*(lines.length-1 -i))-2 );
  2056. }
  2057.  
  2058. /*
  2059. ctx.beginPath();
  2060. ctx.moveTo(options.x,options.y);
  2061. ctx.lineTo(options.x,options.y+options.h);
  2062. ctx.lineTo(options.x + options.w,options.y +options.h);
  2063. ctx.lineTo(options.x + options.w,options.y );
  2064. ctx.lineTo(options.x,options.y);
  2065. ctx.strokeStyle="#ff0000"; ctx.lineWidth=0.5;
  2066. ctx.stroke();
  2067. ctx.beginPath();
  2068. ctx.moveTo(options.x,options.y + (options.h-blockh)/2);
  2069. ctx.lineTo(options.x,options.y + (options.h-blockh)/2 + blockh);
  2070. ctx.strokeStyle="#00ff00"; ctx.lineWidth=1;
  2071. ctx.stroke();*/
  2072.  
  2073. }
  2074.  
  2075. function item(img,val,quant,name,id){
  2076. this.name = name;
  2077. this.image = new Image();
  2078. this.image.src = img;
  2079. this.quant = quant;
  2080. this.val = val;
  2081. this.id = id;
  2082. this.x; this.y; this.w; this.h;
  2083. this.draw = function(x,y,w,h,quant){
  2084. this.x = x;
  2085. this.y = y;
  2086. this.w = w;
  2087. this.h = h;
  2088. if(myInv.hidden){
  2089. if(quant == 0)ctx.globalAlpha = 0.3;
  2090. ctx.drawImage(this.image,this.x,this.y,this.w,this.h);
  2091. ctx.globalAlpha = 1;
  2092. }else{
  2093. if(quant == 0)ctx.globalAlpha = 0.3;
  2094. ctx.drawImage(this.image,this.x,this.y,this.w,this.h);
  2095. boxedText({msg:this.val+"F",x:this.x,w:this.w,y:this.y + this.h*0.6,h:this.h*0.4,font:'bold',texth:24,color:'#ff7700',alignW:1,alignH:1})
  2096. if(quant == 0)ctx.globalAlpha = 1;
  2097. if(quant > 0)boxedText({msg:quant,x:this.x+2,w:this.w,y:this.y,h:this.h*0.4,font:'bold',texth:24,alignW:0,alignH:0})
  2098. }
  2099. }
  2100. }
  2101.  
  2102. var myInv = new function(){
  2103. this.items = [];
  2104. this.offseth = 0;
  2105. this.pot = 0;
  2106. this.referred = "";
  2107. this.hidden = false;
  2108. this.filtered = false;
  2109. this.resize = 1;
  2110. this.KK = 0;
  2111.  
  2112. this.add = function(id,quant){
  2113. for(var i in this.items){
  2114. if(this.items[i].id == id){
  2115. this.items[i].quant += quant;
  2116. this.pot += quant*items[i].val;
  2117. return;
  2118. }
  2119. }
  2120. this.items.push({id:id,quant:quant});
  2121. }
  2122. this.draw = function(){
  2123.  
  2124. this.pot = 0;
  2125. for(var i in this.items){
  2126. this.pot += this.items[this.items[i].id].quant*items[this.items[i].id].val;
  2127. }
  2128. }
  2129. }
  2130.  
  2131. var round = window.round = new function(){
  2132. this.timer = 20;
  2133. this.winner = "";
  2134. this.special = "";
  2135. this.rollwin = false;
  2136. this.name ="";
  2137. this.loggedin = false;
  2138. this.isAdmin = false;
  2139. this.totalval = 0;
  2140. this.rows = 5;
  2141. this.wagers = [];
  2142. this.specialRect = new rect(0.01,0,0.76,45/h,{
  2143. boxcolor:{default:"#882200"}
  2144. });
  2145.  
  2146. this.draw = function(){
  2147. this.totalval = 0;
  2148. for(var i in this.wagers)this.totalval+=this.wagers[i].value;
  2149. boxedText({msg:this.totalval + "F",
  2150. x:w*0.2,
  2151. y:h*0.1,
  2152. w:w*.6,
  2153. h:h*0.175,
  2154. texth:50 + this.totalval/100,
  2155. font:'800',
  2156. color:'#ff8800',
  2157. alignW:0.5,
  2158. alignH:1});
  2159.  
  2160. }
  2161. this.specialDraw = function(){
  2162. this.specialRect.w = w*0.98
  2163. this.specialRect.h = 45;
  2164. this.specialRect.draw();
  2165. ctx.textAlign = 'left';
  2166. boxedText({msg:"SPECIAL ROUND!! - "+this.special[0],
  2167. x:this.specialRect.x,
  2168. y:this.specialRect.y,
  2169. w:this.specialRect.w,
  2170. h:this.specialRect.h/2,
  2171. texth:18,
  2172. font:'bold',
  2173. alignW:0.5,
  2174. alignH:0.5});
  2175. boxedText({msg:this.special[1],
  2176. x:this.specialRect.x,
  2177. y:this.specialRect.y+this.specialRect.h/2,
  2178. w:this.specialRect.w,
  2179. h:this.specialRect.h/2,
  2180. texth:18,
  2181. alignW:0.5,
  2182. alignH:0});
  2183. }
  2184.  
  2185. this.imageroll = [];
  2186. this.victorysfx;
  2187. this.p = -Math.random()*(w/resetSettings.p)
  2188. this.hash = "";
  2189. var played = false;
  2190. this.rollsfx = 0;
  2191. this.endstart = Date.now();
  2192. this.randomwin = Math.random();
  2193. this.win = function(){
  2194. var size = w/3*(720/1280);
  2195. var xscreen = (w)*0.5
  2196.  
  2197. var xval = Math.min((Date.now() - this.endstart)/1000,12);
  2198. this.p = ((-81*xval*xval - 12)/(xval*xval + 6) - 2 + xval/2)*300 + (this.randomwin*143 - 33);
  2199.  
  2200. for(var b = Math.max(this.rollsfx - 4,0); b < this.rollsfx + 4; b++){
  2201. ctx.drawImage( this.wagers[this.imageroll[b]].image,(this.p* xscreen/500) + size*b,h*0.285,size,size);
  2202. //ctx.fillText(b,(this.p* xscreen/500) + size*(b+.5) ,h*0.285 -30);
  2203. }
  2204.  
  2205. if((this.p* xscreen/500) + size*this.rollsfx < xscreen){
  2206. if(gamemode == 0){var throwaway = new Audio("client/sfx/Button_click.oga");throwaway.volume = window.handleWindowMute(0.6);throwaway.play();}
  2207. this.rollsfx = Math.ceil( (xscreen - (this.p* xscreen/500))/(size) );
  2208. }
  2209. ctx.beginPath(); ctx.strokeStyle = '#ffff00'; ctx.lineWidth = Math.ceil(w/18)/10;
  2210. ctx.moveTo(xscreen,h*0.285);
  2211. ctx.lineTo(xscreen,h*0.285 + size);
  2212. ctx.stroke();
  2213.  
  2214. if(xval == 12){
  2215. if(!played){
  2216. if(!sfxMute && gamemode == 0){this.victorysfx.play();}
  2217. played = true;
  2218. }
  2219. var winpercent = Math.floor(round.winner*100000)/1000;
  2220. ctx.textAlign = 'left';
  2221. boxedText({msg:round.wagers[this.imageroll[120]].owner +" wins!",
  2222. x:0,
  2223. w:w,
  2224. y:h*0.285 - h*0.2,
  2225. h: h*0.06,
  2226. texth: h*0.06,
  2227. alignH:0.5,
  2228. alignW:0.5,
  2229. font:'bold',
  2230. })
  2231. if(cursorCol({x:w*0.2,y:h*0.97,w:w*0.6,h:h*0.03}))boxedText({msg:"Hash: " + this.hash + " --> " + Math.floor(round.winner*100000)/1000 + "%",x:w*0.2,y:h*0.97,w:w*0.6,h:h*0.03,texth:14,alignW:0.5,alignH:0})
  2232. ctx.beginPath(); ctx.strokeStyle = '#ffdd00'; ctx.lineWidth = Math.ceil(w/450);
  2233. ctx.moveTo(wageroptions.x + wageroptions.w*(winpercent/100),wageroptions.y - wageroptions.h*0.2);
  2234. ctx.lineTo(wageroptions.x + wageroptions.w*(winpercent/100),wageroptions.y + wageroptions.h*1.2);
  2235. ctx.stroke();
  2236. }else{
  2237. played = false;
  2238. if(cursorCol({x:w*0.2,y:h*0.97,w:w*0.6,h:h*0.03})){
  2239. ctx.clearRect(w*0.1,h*0.978,w*0.8,h*0.03);
  2240. boxedText({msg:"Hash: " + this.hash,x:w*0.2,y:h*0.97,w:w*0.6,h:h*0.03,texth:14,alignW:0.5,alignH:0})
  2241. }
  2242. }
  2243. }
  2244. }
  2245.  
  2246. var round2 = new function(){
  2247. this.timer = 30;
  2248. this.winner = "";
  2249. this.rollwin = false;
  2250. this.totalval = 0;
  2251. this.wagers = [];
  2252. this.attacks = [];
  2253. this.dmgdealt = 0;
  2254. this.cloneWagers = [];
  2255. this.attackSpread = [{dmg:1,sfx:"/client/sfx/magicShoot.mp3",proj:"/client/resources/proj/staffShoot.gif"},{dmg:5,sfx:"/client/sfx/ArrowShoot.oga",proj:"/client/resources/proj/bowShoot.png"},{dmg:25,sfx:"/client/sfx/BladeSwing.oga",proj:"/client/resources/proj/swordShoot.png"}];
  2256.  
  2257. this.updateWagers = function(){
  2258. this.totalval = 0;
  2259. var tempObj = {};
  2260. for(var i in this.wagers){
  2261. this.totalval+=this.wagers[i].value;
  2262. for(var x in this.wagers[i].items){
  2263. if(this.wagers[i].items[x] in tempObj)tempObj[this.wagers[i].items[x]]++;
  2264. else tempObj[this.wagers[i].items[x]] = 1;
  2265. }
  2266. }
  2267. document.getElementById("gm1_items_table").innerHTML = "";
  2268. document.getElementById("gm1_HP").innerHTML = this.totalval==0?"0 HP":("1 - " + this.totalval + " HP")
  2269. for(var x in tempObj){
  2270. document.getElementById("gm1_items_table").innerHTML += "<div class='kkpitem' style='position:relative;background-image:url("+ items[window.id_to_pos(x)].image.src +");background-size: contain;width:7.5vh;height:7.5vh;'><div class='wdItemQuant' style='text-align:left;height:3vh;font-size:3vh;'>"+tempObj[x]+"</div></div>"
  2271. }
  2272. }
  2273. this.updateWagersInfo = function(){
  2274. var wager_infos = document.getElementsByClassName("gm1_wager_info");
  2275. var index = 0;
  2276. for(var h = 0; h < wager_infos.length; h++){
  2277. for(var j = 0; j < this.wagers.length;j++){
  2278. if(this.wagers[j].owner == wager_infos[h].getAttribute("name") && j===index){
  2279. wager_infos[h].innerHTML = this.wagers[j].value + " DMG - " + (this.wagers[j].value*100/this.totalval).toFixed(2) + "&#37;";
  2280. index++;
  2281. break;
  2282. }
  2283. }
  2284. }
  2285. }
  2286. this.win_init = function(){
  2287. $("#gm1_wagers_table").animate({ top: "101vh",bottom:"-30vh"}, 900);
  2288. $("#gm1_chest").animate({ top: "38vh",right:(document.getElementById("gamemode1").offsetWidth/2 - h*0.24) + "px"}, 900);
  2289. $("#gm1_items_table").animate({ top: "65vh",bottom:"3vh"}, 900);
  2290. $("#gm1_timer").css("display","none");
  2291. $("#gm1_dmg_dealt").html(this.dmgdealt + " DMG DEALT");
  2292. $("#gm1_attacker").animate({ top: "38vh"}, 500);
  2293. $("#gm1_attacker").css("background-image","url(\""+this.cloneWagers[0].image.src+"\")");
  2294. $("#gm1_attacker-info").html(this.cloneWagers[0].owner + "<br><span style='font-size:0.75em'>"+this.attacks[0].chance.toFixed(2)+"%</span>");
  2295. setTimeout(function(){
  2296. $("#gm1_chest").css("right","calc(50% - 24vh)");
  2297. round2.win()
  2298. }, 1300);
  2299. }
  2300.  
  2301. this.win = function(){
  2302. if(this.attacks.length > 0 && this.rollwin){
  2303. if(this.attacks[0].sequence.length == 0){
  2304. this.attacks.shift();
  2305. if(this.attacks.length > 0){
  2306. this.cloneWagers.shift();
  2307. $("#gm1_attacker").animate({ top: "101vh"}, 400);
  2308. setTimeout(function(){
  2309. $("#gm1_attacker").css("background-image","url(\""+round2.cloneWagers[0].image.src+"\")");
  2310. $("#gm1_attacker").css("top", "-20vh");
  2311. $("#gm1_attacker-info").html(round2.cloneWagers[0].owner + "<br><span style='font-size:0.75em'>"+round2.attacks[0].chance.toFixed(2)+"%</span>");
  2312. setTimeout(function(){
  2313. $("#gm1_attacker").animate({ top: "38vh"}, 400);
  2314. setTimeout(function(){round2.win()}, 500);
  2315. }, 50);
  2316. }, 450);
  2317. }else{
  2318. $("#gm1_chest").css("top","-30vh");
  2319. $("#gm1_chest").css("right","5.1vh");
  2320. setTimeout(function(){
  2321. $("#gm1_chest_broke").css("display","block");
  2322. if(gamemode==1){var sfx = new Audio("client/sfx/Loot_appears.oga");sfx.volume = window.handleWindowMute(0.4);sfx.play();}
  2323. setTimeout(function(){
  2324. $("#gm1_winner").html(round2.cloneWagers[0].owner + " wins!<br><span style='font-size:0.5em;line-height: 0vh;'>The chest had " + (Math.floor(round2.totalval * round2.winner)+1) + " HP!</span><br><span style='font-weight: 700;font-size:0.2em;-webkit-text-stroke-width: 0px;'>Hash: "+round2.hash+" ---\> "+ (round2.winner*100).toFixed(4) +"&#37; ---\> " + (Math.floor(round2.totalval * round2.winner)+1) + " / "+ round2.totalval +"</span>")
  2325. if(!sfxMute && gamemode==1){round2.victorysfx.play();}
  2326. },1000);
  2327. },150);
  2328. }
  2329. }else{
  2330. nextAtt = this.attacks[0].sequence.shift();
  2331. if(gamemode==1){var tempsfx = new Audio(this.attackSpread[nextAtt].sfx);tempsfx.volume = window.handleWindowMute(0.3);tempsfx.play();}
  2332. $("#gm1_dmg").css("top","-1vh");
  2333. $("#gm1_dmg").animate({ top: "-7vh"}, 600);
  2334. $("#gm1_dmg").html("-" + this.attackSpread[nextAtt].dmg)
  2335. $("#gm1_attacker-proj").css("background-image","url(\"" + this.attackSpread[nextAtt].proj + "\")");
  2336. this.dmgdealt += this.attackSpread[nextAtt].dmg;
  2337. $("#gm1_attacker-proj").css("left","17vh");
  2338. $("#gm1_attacker-proj").css("display","block");
  2339. $("#gm1_attacker-proj").animate({ left: "30vh"}, 250);
  2340. setTimeout(function(){$("#gm1_attacker-proj").css("display","none");},250);
  2341. setTimeout(function(){
  2342. $("#gm1_dmg").css("display","block");
  2343. $("#gm1_dmg_dealt").html(round2.dmgdealt + " DMG DEALT");
  2344. },175);
  2345. setTimeout(function(){$("#gm1_dmg").css("display","none");}, 600);
  2346. setTimeout(function(){round2.win()}, this.attacks[0].sequence.length == 0 && this.attacks.length == 0?50:650);
  2347. }
  2348. }
  2349. }
  2350.  
  2351. this.win_finished = function(x){
  2352. $("#gm1_wagers_table").stop(true, true);
  2353. $("#gm1_attacker-proj").stop(true, true);
  2354. $("#gm1_chest").stop(true, true);
  2355. $("#gm1_items_table").stop(true, true);
  2356. $("#gm1_attacker").stop(true, true);
  2357. $("#gm1_wagers_table").animate({ top: "38.5vh",bottom:"7vh"}, 1000);
  2358. $("#gm1_chest").animate({ top: "18vh",right:"5.1vh"}, 1000);
  2359. $("#gm1_items_table").animate({ top: "38.5vh",bottom:"7vh"}, 1000);
  2360. $("#gm1_attacker").css("top", "-30vh");
  2361. $("#gm1_timer").css("display","block");
  2362. $("#gm1_chest_broke").css("display","none");
  2363. $("#gm1_winner").html("");
  2364. $("#gm1_dmg_dealt").html("");
  2365. this.dmgdealt = 0;
  2366. if(x==1){
  2367. $("#gm1_wagers_table").html("");
  2368. $("#gm1_items_table").html("");
  2369. $("#gm1_timer").html("");
  2370. $("#gm1_HP").html("0 HP");
  2371. setTimeout(function(){
  2372. $("#gm1_chest").css("top","18vh");
  2373. $("#gm1_chest").css("right","5.1vh");
  2374. $("#gm1_items_table").css("top","38.5vh");
  2375. $("#gm1_items_table").css("bottom","7vh");
  2376. $("#gm1_wagers_table").css("top","38.5vh");
  2377. $("#gm1_wagers_table").css("bottom","7vh");
  2378. round2.victorysfx.pause();
  2379. round2.win_finished(0)
  2380. },1500);
  2381. }
  2382. }
  2383.  
  2384. this.victorysfx;
  2385. this.hash = "";
  2386. }
  2387.  
  2388. var wagerscroll = new rect((w*0.1)/w,wageroptions.y/h,(w*0.8)/w,h);
  2389. wagerscroll.offsety = 0;
  2390. function wager(itemsarr,worth,owner,image,id,rankcolor,color){
  2391. //items is an array, id being wager #
  2392. this.items = itemsarr;
  2393. this.image = new Image();
  2394. this.image.src = image;
  2395. this.backup = new Image();
  2396. this.backup.src = 'client/resources/favicon.png';
  2397. this.value = worth;
  2398. this.offset = 0; this.animateend = 200;
  2399. this.id = id;
  2400. this.owner = owner;
  2401. this.rankcolor = rankcolor;
  2402. this.idcolor = color;
  2403. this.x,this.y,this.w,this.h;
  2404. this.draw = function(){
  2405.  
  2406. this.offset++;
  2407. if(this.offset > this.animateend)this.offset = this.animateend;
  2408. ctx.globalAlpha = this.offset/200;
  2409. this.w = w/(round.rows+1);
  2410. this.h = this.w;
  2411. this.x = (w - this.w*round.rows)/2 + this.w*(this.id%round.rows)
  2412. this.y = Math.max(h*0.58 + (h/3)*Math.pow(1.04,-(this.offset-2)) + this.h*(Math.floor(this.id/round.rows)) + wagerscroll.offsety,wageroptions.y - this.h*1.5);
  2413. ctx.drawImage(this.image!==undefined?this.image:this.backup,this.x,this.y,this.h,this.h)
  2414.  
  2415. ctx.beginPath();
  2416. ctx.moveTo(this.x+1,this.y +1);
  2417. ctx.lineTo(this.x +1,this.y+this.h -1);
  2418. ctx.lineTo(this.x + this.w -1,this.y +this.h -1);
  2419. ctx.lineTo(this.x + this.w -1,this.y +1);
  2420. ctx.lineTo(this.x +1,this.y +1);
  2421. ctx.strokeStyle=this.idcolor;
  2422. ctx.lineWidth=2;
  2423. ctx.stroke();
  2424. ctx.globalAlpha = 1;
  2425.  
  2426. }
  2427. }
  2428.  
  2429. function rect(xx,yy,ww,hh,options,func){
  2430. this.x = w*xx,this.y = h*yy,this.w = w*ww,this.h = h*hh;
  2431. this.options = options||{};
  2432. this.click = func||function(){};
  2433. this.clicked = false;
  2434. this.drawing = false;
  2435. if(this.options.image!==undefined){
  2436. this.options.images = {};
  2437. this.options.images.default = new Image();
  2438. this.options.images.default.src = this.options.image.default;
  2439. this.options.images.hover = new Image();
  2440. this.options.images.hover.src = this.options.image.hover;
  2441. this.options.images.clicked = new Image();
  2442. this.options.images.clicked.src = this.options.image.clicked;
  2443. this.options.images.clickedhover = new Image();
  2444. this.options.images.clickedhover.src = this.options.image.clickedhover;
  2445. }
  2446.  
  2447. this.draw = function(){
  2448. if(this.options.boxcolor!==undefined){
  2449. ctx.fillStyle = (this.options.boxcolor.onhover!==undefined&&cursorCol(this) ) ? this.options.boxcolor.onhover : (this.options.boxcolor.clicked!==undefined&&this.clicked)? this.options.boxcolor.clicked :this.options.boxcolor.default;
  2450. ctx.globalAlpha = (this.options.alpha!==undefined)?this.options.alpha:1;
  2451. ctx.fillRect(this.x,this.y,this.w,this.h);
  2452. }
  2453. if(this.options.image!==undefined){
  2454. if(this.clicked){
  2455. if(cursorCol(this))ctx.drawImage(this.options.images.clickedhover||this.options.images.hover||this.options.images.default,this.x,this.y,this.w,this.h);
  2456. else ctx.drawImage(this.options.images.clicked||this.options.images.default,this.x,this.y,this.w,this.h);
  2457. }else{
  2458. if(cursorCol(this)) ctx.drawImage(this.options.images.hover||this.options.images.default,this.x,this.y,this.w,this.h);
  2459. else ctx.drawImage(this.options.images.default,this.x,this.y,this.w,this.h);
  2460. }
  2461. }
  2462. ctx.globalAlpha = 1;
  2463.  
  2464. if(this.options!==undefined){
  2465. if(this.options.text!==undefined){
  2466. var text = (this.options.text.onhover!==undefined&&cursorCol(this) )? this.options.text.onhover :(this.options.text.clicked!==undefined&&this.clicked)? this.options.text.clicked : this.options.text.default;
  2467. if(this.options.text.color!==undefined){
  2468. var color = this.options.text.color.onhover!==undefined&&cursorCol(this) ? this.options.text.color.onhover : this.options.text.color.clicked!==undefined&&this.clicked? this.options.text.color.clicked : this.options.text.color.default;
  2469. }else{
  2470. var color = "#ffffff";
  2471. }
  2472. boxedText({msg:text,x:this.x,y:this.y,w:this.w,h:this.h,texth:this.options.text.size||20,color:color});
  2473.  
  2474. }
  2475. if(this.options.additionalText!==undefined){
  2476. for(var i in this.options.additionalText){
  2477. boxedText(this.options.additionalText[i])
  2478. }
  2479. }
  2480.  
  2481. }
  2482.  
  2483.  
  2484. }
  2485. this.update = function(){
  2486. this.x = w*xx; this.y = h*yy; this.w = w*ww; this.h = h*hh;
  2487. }
  2488. EDITBOXES.push(this);
  2489. }
  2490.  
  2491.  
  2492. function cursorCol(Element1){
  2493. return (Element1.x + Element1.w > mx && Element1.x < mx && Element1.y < my && Element1.y + Element1.h > my)
  2494. }
  2495.  
  2496. function init()
  2497. {
  2498. if(typeof game_loop != "undefined") clearInterval(game_loop);
  2499. game_loop = setInterval(paint, 12);
  2500. } init();
  2501.  
  2502.  
  2503. ///////////////////////////////paint///////////////////////////
  2504. ///////////////////////////////////////////////////////////////
  2505. ///////////////////////////////////////////////////////////////
  2506. ///////////////////////////////////////////////////////////////
  2507. ///////////////////////////////////////////////////////////////
  2508. ///////////////////////////////////////////////////////////////
  2509. ///////////////////////////////////////////////////////////////
  2510. ///////////////////////////////////////////////////////////////
  2511.  
  2512. function paint(){
  2513.  
  2514. ctx.clearRect(0, 0, w, h);
  2515.  
  2516. round.rows = Math.floor(5.5 * w/h);
  2517. wageroptions = {worth:0,x:w*0.02,y:Math.max(h*0.285 + (w/3*(720/1280))*1.04,h/2),w:w*0.96,h:(w/3*(720/1280))*0.07}
  2518. for(var i = 0; i < round.wagers.length; i++){
  2519. var xx = wageroptions.x + wageroptions.w*(wageroptions.worth/round.totalval);
  2520. var yy = wageroptions.y;
  2521. var ww = wageroptions.w*(round.wagers[i].value/round.totalval);
  2522. var hh = wageroptions.h;
  2523.  
  2524. ctx.fillStyle = round.wagers[i].idcolor;
  2525. ctx.fillRect(xx,yy,ww,hh)
  2526. wageroptions.worth += round.wagers[i].value;
  2527.  
  2528. ctx.beginPath();
  2529. ctx.moveTo(xx,yy );
  2530. ctx.lineTo(xx ,yy+hh );
  2531. ctx.lineTo(xx + ww ,yy +hh );
  2532. ctx.lineTo(xx + ww ,yy );
  2533. ctx.lineTo(xx ,yy );
  2534. ctx.strokeStyle="#ffffff";
  2535. ctx.lineWidth=1;
  2536. ctx.stroke();
  2537.  
  2538. }
  2539. for(var i = 0; i < round.wagers.length; i++)round.wagers[i].draw();
  2540.  
  2541. ctx.fillStyle = 'white';ctx.clearRect(0,0,w,wageroptions.y);
  2542. if(!round.rollwin){
  2543. if(round.wagers.length > 0){
  2544. boxedText({msg:Math.max(((round.timer - Date.now())/1000),0).toFixed(1),
  2545. //boxedText({msg:(round.timer).toFixed(1),
  2546. x:0,
  2547. y:h*0.30,
  2548. w:w,
  2549. h:h*0.08,
  2550. font:'800',
  2551. texth:h*0.08,
  2552. alignW:0.5,
  2553. alignH:0.5
  2554. })
  2555. }
  2556. }else{
  2557. round.win();
  2558. }
  2559.  
  2560. for(var i = 0; i < round.wagers.length; i++){
  2561. if(cursorCol(round.wagers[i])){
  2562. var size = w*0.04;
  2563. ctx.font = size+'px Arial';
  2564. ctx.fillStyle = "#000000"; ctx.globalAlpha = 0.9;
  2565. var boxw = Math.max(round.wagers[i].w,size*(Math.min(8,round.wagers[i].items.length)+1),ctx.measureText(round.wagers[i].owner||"player").width);
  2566. var boxx = [0,w-boxw,round.wagers[i].x + (round.wagers[i].w - boxw)/2].sort(function(a, b){return a-b})[1]
  2567. ctx.fillRect(boxx,round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) +4.5),boxw,size*(Math.floor( (round.wagers[i].items.length-1)/8)+4.5) );
  2568. ctx.globalAlpha = 1; ctx.textAlign = 'left';
  2569. for(var j in round.wagers[i].items){
  2570. var xx = j%8;
  2571. var yy = Math.floor(j/8);
  2572. ctx.drawImage(items[window.id_to_pos(round.wagers[i].items[j])].image||round.wagers[i].backup,boxx + boxw/2 + size*(xx-Math.min(4,round.wagers[i].items.length/2)),round.wagers[i].y + round.wagers[i].h - size*( Math.floor((round.wagers[i].items.length-1)/8) - yy+1.5),size,size)
  2573. }
  2574. boxedText({msg:round.wagers[i].value+"F",
  2575. x:boxx,
  2576. y:round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) - yy+3.5),
  2577. w:boxw,
  2578. h:size,
  2579. texth:size,
  2580. font:'bold',
  2581. color:'#ff8800',
  2582. alignW:0.5,
  2583. alignH:0
  2584. })
  2585. boxedText({msg:round.wagers[i].owner||"player",
  2586. x:boxx,
  2587. y:round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) - yy+4.5),
  2588. w:boxw,
  2589. h:size,
  2590. texth:size,
  2591. color:round.wagers[i].rankcolor,
  2592. font:'bold',
  2593. alignW:0.5,
  2594. alignH:0
  2595. })
  2596. boxedText({msg:(Math.floor((round.wagers[i].value/round.totalval)*10000)/100).toFixed(2) + "%",
  2597. x:boxx,
  2598. y:round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) - yy+2.5),
  2599. w:boxw,
  2600. h:size,
  2601. font:'bold',
  2602. texth:size,
  2603. alignW:0.5,
  2604. alignH:0.5
  2605. });
  2606. ctx.beginPath();
  2607. ctx.moveTo(boxx,round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) +4.5) );
  2608. ctx.lineTo(boxx ,round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) +4.5)+size*(Math.floor( (round.wagers[i].items.length-1)/8)+4.5) );
  2609. ctx.lineTo(boxx + boxw ,round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) +4.5) +size*(Math.floor( (round.wagers[i].items.length-1)/8)+4.5) );
  2610. ctx.lineTo(boxx + boxw ,round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) +4.5) );
  2611. ctx.lineTo(boxx ,round.wagers[i].y + round.wagers[i].h - size*(Math.floor((round.wagers[i].items.length-1)/8) +4.5) );
  2612. ctx.strokeStyle="#ffffff";
  2613. ctx.lineWidth=2;
  2614. ctx.stroke();
  2615. break;
  2616. }
  2617. }
  2618.  
  2619.  
  2620. ctx.textAlign = 'left';
  2621. if(round.special!="")round.specialDraw();
  2622. round.draw();
  2623.  
  2624. if(!round2.rollwin){
  2625. if(round2.wagers.length > 0){
  2626. temptimer = Math.max(((round2.timer - Date.now())/1000),0)
  2627. document.getElementById("gm1_timer").innerHTML = temptimer.toFixed(1);
  2628. temp = temptimer<=9 ? Math.ceil(255*Math.abs(Math.cos((temptimer / ( temptimer<=5?1 : 2 )*2*Math.PI ) ))) : 255;
  2629. document.getElementById("gm1_timer").style.color = "rgb(255," + temp +","+ temp + ")";
  2630. }
  2631. }
  2632.  
  2633.  
  2634.  
  2635. //////////////////
  2636.  
  2637. ctx.globalAlpha = 1;
  2638. for(var i in EDITBOXES)if(EDITBOXES[i].drawing)EDITBOXES[i].draw();
  2639.  
  2640. if(document.getElementById("deposit-timer").style.display == 'block'){
  2641. seconds = Math.floor((document.getElementById("deposit-timer").time - Date.now())/1000);
  2642. if(seconds > 0){
  2643. document.getElementById("deposit-timer").innerHTML = Math.floor(seconds/60) + ":" + (String(seconds%60).length == 1?"0":"") + Math.floor(seconds%60);
  2644. document.getElementById("deposit-timer").style.color = (seconds%2 == 0 || seconds <= 10)?"#ff0000":"#ffffff";
  2645. }else{
  2646. document.getElementById("deposit-timer").style.color = "#ff0000";
  2647. document.getElementById("deposit-timer").innerHTML = "Time's up!";
  2648. }
  2649. }
  2650.  
  2651.  
  2652. }///////////////////////////////endpaint///////////////////////////
  2653.  
  2654. canvas.addEventListener('click', function (evt){
  2655. for(var i in EDITBOXES){
  2656. if(cursorCol(EDITBOXES[i]) && EDITBOXES[i].drawing){
  2657. if(EDITBOXES[i].click!==undefined)EDITBOXES[i].click();
  2658. }
  2659. }
  2660. }, false);
  2661.  
  2662.  
  2663. window.addEventListener('mousemove', function(evt) {
  2664. var mousePos = getMousePos(canvas, evt);
  2665. mx = mousePos.x;
  2666. my = mousePos.y;
  2667. }, false);
  2668.  
  2669. var keyDown = [];
  2670. window.addEventListener('keydown', function(evt){
  2671. keyDown[evt.keyCode] = true;
  2672. })
  2673. window.addEventListener('keyup', function(evt){
  2674. keyDown[evt.keyCode] = false;
  2675. if (evt.keyCode === 13 && document.getElementById('datamodal').style.display == "block"){
  2676. if(document.getElementById('login-prompt').style.display == "block")document.getElementById("login-submit").click();
  2677. if(document.getElementById('withdraw-window').style.display == "block")document.getElementById("withdraw-submit").click();
  2678. if(document.getElementById('signup-prompt').style.display == "block"){
  2679. if(document.getElementById('Tos-accept').style.display == "block")document.getElementById("Tos-accept").click();
  2680. else if(document.getElementById('signup-submit').style.display == "block")document.getElementById("signup-submit").click();
  2681. }
  2682. if(document.getElementById('redeem-code').style.display == "block")document.getElementById("redeem-code-button").click();
  2683. }
  2684. if(evt.keyCode === 32 && document.getElementById('kk-packages-complete').style.display == "block"){
  2685. if(document.getElementById('kkshop-package-completebtn').style.display == "none"){
  2686. clearTimeout(clearChestTimeout);
  2687. $("#kk-packages-complete-count").css("display","block");
  2688. $("#kkshop-package-completebtn").css("display","block");
  2689. $("#kk-packages-complete-outcome").stop(true,true);
  2690. $("#kk-packages-chest-reveal").stop(true,true);
  2691. $("#kk-packages-chest-reveal").css("animation","chest-open 0.05s steps(1) forwards");
  2692. $("#kk-packages-chest-reveal").css("top","3%");
  2693. $("#kk-packages-complete-outcome").css("bottom","3%");
  2694. }else if(document.getElementById('kk-packages-complete-outcome').style.bottom == "3%"){
  2695. prepareKKpackOut(KKpackagesOutcome,true);
  2696. }
  2697. $("#kkshop-package-completebtn").prop("disabled",false);
  2698. }
  2699. })
  2700.  
  2701. function displaywheel(e){
  2702. var evt=window.event || e //equalize event object
  2703. var delta=evt.detail? evt.detail : evt.wheelDelta/120 //check for detail first so Opera uses that instead of wheelDelta
  2704.  
  2705. if(cursorCol(wagerscroll) && document.getElementById('datamodal').style.display != 'block'){
  2706. wagerscroll.offsety += delta*(h/24);
  2707. if(wagerscroll.offsety > 0)wagerscroll.offsety=0;
  2708. }
  2709. }
  2710.  
  2711. var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x
  2712. if (document.attachEvent) //if IE (and Opera depending on user setting)
  2713. document.attachEvent("on"+mousewheelevt, displaywheel)
  2714. else if (document.addEventListener) //WC3 browsers
  2715. document.addEventListener(mousewheelevt, displaywheel, false)
  2716.  
  2717.  
  2718. function checkMobile(){
  2719. return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))
  2720. }
  2721.  
  2722. window.addEventListener('resize',function(evt){
  2723. canvasSettings();
  2724. if(window.innerHeight >= window.innerWidth){
  2725. $(".inv-i").css('font-size',5*(1/(1 + myInv.resize)) + "vw");
  2726. $('#sidebar_inv').scrollTop(keepTrackScroll*window.innerWidth*0.14/(1 + myInv.resize))
  2727. }else{
  2728. $(".inv-i").css('font-size',5*(1/(1 + myInv.resize)) + "vh");
  2729. $('#sidebar_inv').scrollTop(keepTrackScroll*window.innerHeight*0.135/(1 + myInv.resize))
  2730. }
  2731. for(var i in EDITBOXES)EDITBOXES[i].update();
  2732. });
  2733.  
  2734. $(function() {
  2735. $("form").submit(function() { return false; });
  2736. });
  2737.  
  2738. function getMousePos(canvas, evt)
  2739. {
  2740. var rect = canvas.getBoundingClientRect();
  2741. return {
  2742. x: evt.clientX - rect.left,
  2743. y: evt.clientY - rect.top
  2744. };
  2745. }
  2746.  
  2747. })//end doc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement