NordeaVisa4Ever

Ser till att ditt Visa-kort hålls öppet för onlineköp kontinuerligt, glöm inte ställa in personnummer och personlig kod.

  1. // ==UserScript==
  2. // @name NordeaVisa4Ever
  3. // @version 0.4
  4. // @description Ser till att ditt Visa-kort hålls öppet för onlineköp kontinuerligt, glöm inte ställa in personnummer och personlig kod.
  5. // @author tregota
  6. // @match https://internetbanken.privat.nordea.se/*
  7. // @match https://www.nordea.se/*
  8. // @grant GM_setValue
  9. // @grant GM_getValue
  10. // @require http://code.jquery.com/jquery-latest.js
  11. // @namespace @tregota
  12. // ==/UserScript==
  13.  
  14. var personnummer = 197001010000;
  15. var personligkod = 0000;
  16.  
  17. var cardActivateInterval = 1000*60*50; // 50 minutes in milliseconds (time inbetween reactivations)
  18. var checkInterval = 1000*60*20; // reload page every 20 minutes and check time left until next activation (heard somewhere that javascript timeouts are unreliable timekeepers.)
  19.  
  20. jQuery(function($)
  21. {
  22. var lastActivation = GM_getValue('lastActivation');
  23. var path = window.location.pathname;
  24. if(path === '/nsp/login')
  25. {
  26. if($('#validation_error').length > 0)
  27. {
  28. alert('Du måste ställa in rätt inloggningsuppgifter i scriptet!')
  29. return;
  30. }
  31. if(($.now()-lastActivation) < cardActivateInterval)
  32. {
  33. var left = (cardActivateInterval-($.now()-lastActivation));
  34. var wait = checkInterval;
  35. if(wait > left)
  36. {
  37. wait = left+10000;
  38. }
  39. if(wait < 1) // probably unnecessary
  40. {
  41. wait = 1;
  42. }
  43. setTimeout(function()
  44. {
  45. window.location.href = 'https://internetbanken.privat.nordea.se/nsp/login';
  46. }, wait);
  47. window.setInterval(function()
  48. {
  49. $('#crisis_info').text(Math.round((cardActivateInterval-($.now()-lastActivation))/1000)+' seconds until reactivation.');
  50. }, 1000);
  51. return;
  52. }
  53.  
  54. var easyLoginTab = $('a').filter(function(index) { return $(this).text() === "Förenklad inloggning"; });
  55. if(easyLoginTab.length > 0)
  56. {
  57. var current = easyLoginTab.parent().attr('id');
  58. if(current !== 'current')
  59. {
  60. window.location.href = easyLoginTab.attr('href');
  61. return;
  62. }
  63. else
  64. {
  65. $('input#personnummer').val(personnummer);
  66. $('input#personligkod').val(personligkod);
  67. setTimeout(function()
  68. {
  69. $('input.button').click();
  70. }, 500);
  71. return;
  72. }
  73. }
  74. else // path still '/nsp/login' after login, just click 'Kort'
  75. {
  76. var kortLink = $('a').filter(function(index) { return $(this).text() === "Kort"; });
  77. if(kortLink.length > 0)
  78. {
  79. window.location.href = kortLink.attr('href');
  80. return;
  81. }
  82. }
  83. }
  84. else if(path === '/nsp/engine')
  85. {
  86. var oppnaLink = $('a').filter(function(index) { return $(this).text() === "Öppna och stänga kort"; });
  87. if(oppnaLink.length > 0)
  88. {
  89. var currentpage = oppnaLink.attr('id');
  90. if(currentpage !== 'currentpage')
  91. {
  92. window.location.href = oppnaLink.attr('href');
  93. return;
  94. }
  95. else
  96. {
  97. var andraButton = $('input[name="card_regions$go_to_card_regions_edit_page_command"]');
  98. if(andraButton.length > 0)
  99. {
  100. if(!lastActivation || ($.now()-lastActivation) >= cardActivateInterval)
  101. {
  102. andraButton.click();
  103. return;
  104. }
  105. else
  106. {
  107. var logoutLink = $('a').filter(function(index) { return $(this).text().indexOf("Logga ut") >= 0 });
  108. if(logoutLink.length > 0)
  109. {
  110. window.location.href = logoutLink.attr('href');
  111. return;
  112. }
  113. }
  114. }
  115. var sparaButton = $('input[name="card_regions$save_card_regions_command"]');
  116. if(sparaButton.length > 0)
  117. {
  118. var allaInternetKop = $('input[type=radio]').filter(function(index) { return $(this).parent().text().indexOf("Alla internetköp") >= 0 });
  119. var endastSakra = $('input[type=radio]').filter(function(index) { return $(this).parent().text().indexOf("Endast säkra internetköp") >= 0 });
  120. if(allaInternetKop.length > 0)
  121. {
  122. if(allaInternetKop.prop("checked"))
  123. {
  124. endastSakra.prop("checked", true);
  125. sparaButton.click();
  126. }
  127. else
  128. {
  129. allaInternetKop.prop("checked", true);
  130. GM_setValue('lastActivation', $.now());
  131. sparaButton.click();
  132. }
  133. return;
  134. }
  135. }
  136. }
  137. }
  138. }
  139. window.location.href = 'https://internetbanken.privat.nordea.se/nsp/login';
  140. });