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.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         NordeaVisa4Ever
// @version      0.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.
// @author       tregota
// @match        https://internetbanken.privat.nordea.se/*
// @match        https://www.nordea.se/*
// @grant        GM_setValue
// @grant        GM_getValue
// @require      http://code.jquery.com/jquery-latest.js
// @namespace    @tregota
// ==/UserScript==

var personnummer = 197001010000;
var personligkod = 0000;

var cardActivateInterval = 1000*60*50; // 50 minutes in milliseconds (time inbetween reactivations)
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.)

jQuery(function($)
{
    var lastActivation = GM_getValue('lastActivation');
    var path = window.location.pathname;
    
    if(path === '/nsp/login')
    {
        if($('#validation_error').length > 0)
        {
            alert('Du måste ställa in rätt inloggningsuppgifter i scriptet!')
            return;
        }
        
        if(($.now()-lastActivation) < cardActivateInterval)
        {
            var left = (cardActivateInterval-($.now()-lastActivation));
            var wait = checkInterval;
            if(wait > left)
            {
                wait = left+10000;
            }
            if(wait < 1) // probably unnecessary
            {
                wait = 1;
            }
            setTimeout(function()
            {
                window.location.href = 'https://internetbanken.privat.nordea.se/nsp/login';
            }, wait);
            window.setInterval(function()
            {
                $('#crisis_info').text(Math.round((cardActivateInterval-($.now()-lastActivation))/1000)+' seconds until reactivation.');
            }, 1000);
            return;
        }

        var easyLoginTab = $('a').filter(function(index) { return $(this).text() === "Förenklad inloggning"; });
        if(easyLoginTab.length > 0)
        {
            var current = easyLoginTab.parent().attr('id');
            if(current !== 'current')
            {
                window.location.href = easyLoginTab.attr('href');
                return;
            }
            else
            {
                $('input#personnummer').val(personnummer);
                $('input#personligkod').val(personligkod);
                
                setTimeout(function()
                {
                    $('input.button').click();
                }, 500);
                return;
            }
        }
        else // path still '/nsp/login' after login, just click 'Kort'
        {
            var kortLink = $('a').filter(function(index) { return $(this).text() === "Kort"; });
            if(kortLink.length > 0)
            {
                window.location.href = kortLink.attr('href');
                return;
            }
        }
    }
    else if(path === '/nsp/engine')
    {
        var oppnaLink = $('a').filter(function(index) { return $(this).text() === "Öppna och stänga kort"; });
        if(oppnaLink.length > 0)
        {
            var currentpage = oppnaLink.attr('id');
            if(currentpage !== 'currentpage')
            {
                window.location.href = oppnaLink.attr('href');
                return;
            }
            else
            {
                var andraButton = $('input[name="card_regions$go_to_card_regions_edit_page_command"]');
                if(andraButton.length > 0)
                {
                    
                    if(!lastActivation || ($.now()-lastActivation) >= cardActivateInterval)
                    {
                        andraButton.click();
                        return;
                    }
                    else
                    {
                        var logoutLink = $('a').filter(function(index) { return $(this).text().indexOf("Logga ut") >= 0 });
                        if(logoutLink.length > 0)
                        {
                            window.location.href = logoutLink.attr('href');
                            return;
                        }
                    }
                }
                var sparaButton = $('input[name="card_regions$save_card_regions_command"]');
                if(sparaButton.length > 0)
                {
                    var allaInternetKop = $('input[type=radio]').filter(function(index) { return $(this).parent().text().indexOf("Alla internetköp") >= 0 });
                    var endastSakra = $('input[type=radio]').filter(function(index) { return $(this).parent().text().indexOf("Endast säkra internetköp") >= 0 });
                    if(allaInternetKop.length > 0)
                    {
                        if(allaInternetKop.prop("checked"))
                        {
                            endastSakra.prop("checked", true);
                            sparaButton.click();
                        }
                        else
                        {
                            allaInternetKop.prop("checked", true);
                            GM_setValue('lastActivation', $.now());
                            sparaButton.click();
                        }
                        return;
                    }
                }
                
            }
        }
    }
    window.location.href = 'https://internetbanken.privat.nordea.se/nsp/login';
});