Notice (8): Undefined index: HTTP_ACCEPT_LANGUAGE [APP/Controller/AppController.php, line 96]Code Contextif ($previousHandler) {
return $previousHandler($code, $message, $file, $line, $context);
}
$locales = [ 'en' => 'en_EN', 'de' => 'de_DE', 'ru' => 'ru_RU' ]Cake\Core\BasePlugin::{closure}() - ROOT/vendor/cakephp/debug_kit/config/bootstrap.php, line 42 App\Controller\AppController::initialize() - APP/Controller/AppController.php, line 96 App\Controller\UsersController::initialize() - APP/Controller/UsersController.php, line 203 Cake\Controller\Controller::__construct() - CORE/src/Controller/Controller.php, line 273 ReflectionClass::newInstance() - [internal], line ?? Cake\Http\ControllerFactory::create() - CORE/src/Http/ControllerFactory.php, line 47 Cake\Http\ActionDispatcher::dispatch() - CORE/src/Http/ActionDispatcher.php, line 91 Cake\Http\BaseApplication::__invoke() - CORE/src/Http/BaseApplication.php, line 235 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 Cake\Routing\Middleware\RoutingMiddleware::__invoke() - CORE/src/Routing/Middleware/RoutingMiddleware.php, line 162 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 Cake\Routing\Middleware\AssetMiddleware::__invoke() - CORE/src/Routing/Middleware/AssetMiddleware.php, line 88 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 Cake\Error\Middleware\ErrorHandlerMiddleware::__invoke() - CORE/src/Error/Middleware/ErrorHandlerMiddleware.php, line 96 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 DebugKit\Middleware\DebugKitMiddleware::__invoke() - ROOT/vendor/cakephp/debug_kit/src/Middleware/DebugKitMiddleware.php, line 53 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65
Notice (8): Undefined index: HTTP_REFERER [APP/Controller/UsersController.php, line 2960]Code Contextif ($previousHandler) {
return $previousHandler($code, $message, $file, $line, $context);
}
Cake\Core\BasePlugin::{closure}() - ROOT/vendor/cakephp/debug_kit/config/bootstrap.php, line 42 App\Controller\UsersController::requestResetPassword() - APP/Controller/UsersController.php, line 2960 Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 610 Cake\Http\ActionDispatcher::_invoke() - CORE/src/Http/ActionDispatcher.php, line 120 Cake\Http\ActionDispatcher::dispatch() - CORE/src/Http/ActionDispatcher.php, line 94 Cake\Http\BaseApplication::__invoke() - CORE/src/Http/BaseApplication.php, line 235 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 Cake\Routing\Middleware\RoutingMiddleware::__invoke() - CORE/src/Routing/Middleware/RoutingMiddleware.php, line 162 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 Cake\Routing\Middleware\AssetMiddleware::__invoke() - CORE/src/Routing/Middleware/AssetMiddleware.php, line 88 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 Cake\Error\Middleware\ErrorHandlerMiddleware::__invoke() - CORE/src/Error/Middleware/ErrorHandlerMiddleware.php, line 96 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 DebugKit\Middleware\DebugKitMiddleware::__invoke() - ROOT/vendor/cakephp/debug_kit/src/Middleware/DebugKitMiddleware.php, line 53 Cake\Http\Runner::__invoke() - CORE/src/Http/Runner.php, line 65 Cake\Http\Runner::run() - CORE/src/Http/Runner.php, line 51 Cake\Http\Server::run() - CORE/src/Http/Server.php, line 98
Warning (512): Unable to emit headers. Headers sent in file=/var/www/i28d1/vendor/cakephp/cakephp/src/Error/Debugger.php line=856 [CORE/src/Http/ResponseEmitter.php, line 51]Code Contextif ($previousHandler) {
return $previousHandler($code, $message, $file, $line, $context);
}
$response = object(Cake\Http\Response) { 'status' => (int) 200, 'contentType' => 'text/html', 'headers' => [ 'Content-Type' => [ [maximum depth reached] ], 'X-DEBUGKIT-ID' => [ [maximum depth reached] ] ], 'file' => null, 'fileRange' => [], 'cookies' => object(Cake\Http\Cookie\CookieCollection) {}, 'cacheDirectives' => [], 'body' => '<!DOCTYPE html> <html> <head> <script> dataLayer = [{ 'pageCategory': 'homepage', 'visitorType': '' // 'userLevel': '' // 'dimension1': '' }]; </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PFTVFLJ');</script> <!-- End Google Tag Manager --> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Wie Deine Bank den Zinsanstieg übersteht"> <meta http-equiv="Cache-Control" content="no-cache" /> <meta property="og:title" content="i28.financetrainer.com"> <meta property="og:description" content="Wie Deine Bank den Zinsanstieg übersteht"> <title>Finance Trainer</title> <link href="/favicon.ico" type="image/x-icon" rel="icon"/><link href="/favicon.ico" type="image/x-icon" rel="shortcut icon"/> <link rel="stylesheet" href="/css/vendor.min.css"/> <link rel="stylesheet" href="/css/main.css?v1.8"/> <link rel="stylesheet" href="/css/lobibox.min.css?v1.1"/> <!--[if IE]> <link rel="stylesheet" type="text/css" href="/css/main-ie.css?v1.1" /> <![endif]--> <link href="https://fonts.googleapis.com/css?family=Karla:400,400i,700,700i|Raleway|Lato" rel="stylesheet"> <script src="/js/ie.js"></script> <script src="/js/vendor.min.js"></script> <script src="/js/jquery.history.js"></script> <script src="/js/lobibox.min.js"></script> <style> .competition_mode {background: linear-gradient(to right, #462623 0%, #cb9b50 100%) !important;} #registerGuest .modal-dialog {width: 360px; height:600px !important; } #registerGuest .modal-header { background-color: #337AB7; padding:16px 16px; color:#FFF; border-bottom:2px dashed #337AB7; } #registerGuest .ok {color:#9FD010; font-style:italic;} #registerGuest .error {color:red; font-style:italic;} .m-progress-bar { min-height: 1em; background: #c12d2d; width: 5%; } .alert {position: absolute; width: 95%; top: 5px; z-index: 999999; } </style> <style> /* Start by setting display:none to make this hidden. Then we position it in relation to the viewport window with position:fixed. Width, height, top and left speak for themselves. Background we set to 80% white with our animation centered, and no-repeating */ .ajax { display: none; position: fixed; z-index: 1000; top: 0; left: 0; height: 100%; width: 100%; background: rgba( 255, 255, 255, .8 ) url('http://i.stack.imgur.com/FhHRx.gif') 50% 50% no-repeat; } /* When the body has the loading class, we turn the scrollbar off with overflow:hidden */ body.loading .ajax { overflow: hidden; } /* Anytime the body has the loading class, our modal element will be visible */ body.loading .ajax { display: block; } .lobibox-notify-msg {min-height:60px !important; max-height:none !important;} #gameContainer { width: 100vw; height: 92vh; } canvas { width: 100%; height: 100%; display: block; } /* try to handle mobile dialog */ canvas + * { z-index: 2; } .alert>p { color: #393939 !important; } .videoContainer { position: absolute; width: 100%; height: 100%; top: 0; left: 0; bottom: 0; right: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; } .videoContainer iframe { /* optional */ width: 100%; height: 100%; } header { position: fixed; top: 0; width: 100%; z-index: 999999; /* background: rgba(0, 0, 0, 0.5); color: #f1f1f1; padding: 20px; */ } .login_block input {height:50px; line-height:45px;} .navbar-nav > li {padding:10px;height: 90px;} </style> <script type="text/javascript"> var gameInstance; /* // Get IE or Edge browser version var version = detectIE(); //var version = msieversion(); console.log(version); if (version !== false && version < 12) { // alert ('it is IE'); window.location.href = 'http://i28.financetrainer.com/settings/browser'; } */ lang = { Zins: "interest", Volumen: "Volume", Success: "Parameters are saved", WrongFormat: "Please only enter numerical values!", WrongGapVal: "Only enter the specified volume", WrongStepN: "You cannot change the GAP's anymore.", WrongAllowGapChange1: "You can`t change the GAP more than ", WrongAllowGapChange2: "times", WarningTitle: "Info", DelayBeforeSubmit: "Check how your input affects the result...", ReloadingAfterSubmit: "Reloading, please, wait...", Benchmark: "XX to beat the Benchmark.", Refuse: "Performance has not improved.", } limit = 5000; var IntroIsPassed = localStorage.getItem('IntroIsPassed'); if (!IntroIsPassed) localStorage.setItem('IntroIsPassed',0); var FromGuest = localStorage.getItem('FromGuest'); if (!FromGuest) localStorage.setItem('FromGuest',0); var SkipTutorial = localStorage.getItem('SkipTutorial'); if (!SkipTutorial) localStorage.setItem('SkipTutorial',0); //var NewLevel = localStorage.getItem('NewLevel'); //if (!NewLevel) // localStorage.setItem('NewLevel',0); function changeLang(lang){ $.ajax({ type: "post", dataType: "json", cache: false, async: true, url: "/users/changeLang", data: {locale:lang}, success: function (response) { if (response.error) { alert (response.message); return false; } else { console.log('Switched to '+response.lang); inFormOrLink = 1; setTimeout(function(){ location.reload(true); },20); //window.location.reload(true); return true; } }, error: function(resp){ console.log(resp); return false; } }); return false; } function checkIfExist(val, field){ $.ajax({ type: "post", url: "/users/checkIfExist", data: {value:val}, success: function (response) { console.log (response); if (response.success) { $('#'+field+'_ok').html(response.message).show(); $('#'+field+'_err').hide(); // $('button.step').attr('disabled', false); $('#err').val(0); } else { $('#err').val(1); // $('button.step').attr('disabled', true); $('#'+response.field+'_ok').hide(); $('#'+response.field+'_err').html(response.message).show(); } } }); return false; } </script> </head> <body class=" "> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PFTVFLJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="container-fluid"> <header class="row"> <nav class="navbar navbar-default"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <a href="/" class="navbar-brand"><img src="/img/financetrainer.logo.png" alt="Finance Trainer"/></a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li class="menu-tipps"> <a href="/competition" style="margin-top: 10px;">Competition</a> </li> <li> <a href="/login" style="height: 35px;line-height:43px;">Login</a> </li> </ul> <style> /*Styling Selectbox*/ #langbox { display: inline-block; padding: 0; height: 40px; margin: 25px 25px 10px 0; vertical-align: top; position: absolute; right: 0; } #langbox .lang-menu { margin-top: 1px; z-index: 9 } #langbox .lang-menu li { padding: 10px; transition: all .2s ease-in-out; cursor: pointer; display: inline-block; } #langbox .lang-menu { padding: 0; list-style: none } #langbox .lang-menu li:hover { color: #999; } #langbox .lang-menu li.active { color: #007cc3; } </style> <script type="text/javascript"> $(document).ready(function() { $('#langbox .lang-menu li').click(function () { // var input = $(this).parents('.dropd').find('input').val(); var input = $(this).attr('id'); var self = $(this); $.ajax({ type: "post", dataType: "json", cache: false, async: true, url: "/users/changeLang", data: {locale:input}, success: function (response) { // $('#selectedLVal').html($('#'+input).html()); $('.lang').removeClass('active'); $(self).addClass('active'); if (response.error) { alert (response.message); } else { console.log('Switched to '+response.lang); inFormOrLink = 1; // setTimeout(function(){ location.reload(true); // },20); //window.location.reload(true); return true; } }, error: function(resp){ console.log(resp); } }); }); }); </script> <div id="langbox"> <ul class="lang-menu"> <li id="en" class="lang active">EN</li> / <li id="de" class="lang ">DE</li> </ul> </div> </div><!-- /.navbar-collapse --> </div><!-- /.container --> </nav> </header> <div id="content" style="margin-top:120px;"> <div class="container signin"> <div class="row"> <div class="col-xs-6 col-xs-offset-3"> <div class="row is-table-row"> <div class="col-xs-6 log-box"> <div class="row active-box"> <div class="col-xs-10 col-xs-offset-1"> <h2 class="text-center">Reset Password</h2> <h3 class="text-center">Please enter your email to reset your password.</h3> <form method="post" accept-charset="utf-8" role="form" action="/users/request-reset-password"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div> <input type="hidden" name="redirect" value="/"/> <fieldset> <div class="form-group text"><input type="text" name="reference" placeholder="Reference/Email *" id="reference" class="form-control"/></div> </fieldset> <p><button class="btn btn-xs btn-default" type="submit">Submit</button></p> </form> </div> </div> <div class="row inactive-box"> <div class="col-xs-10 col-xs-offset-1 text-center"> <p> <a href="/login" class="btn btn-xs btn-default">login</a> </p> <p> <a href="/register" class="btn btn-xs btn-default">Sign in</a> </p> </div> </div> </div> </div> </div> </div> </div> </div> <br/> <div class="container"> <div class="row"> <div class="col-md-12 text-right"> <a href="/"><img src="/img/financetrainer.logo.png" alt="Finance Trainer"/></a> </div> </div> </div> </div> <!-- Not-logged user's Modal --> <div class="modal fade fixed-modal" id="infoModal" tabindex="-1" role="dialog" aria-labelledby="infoModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> </div> <div class="modal-body"> <h2 class="modal-title text-center">Allgemeine Geschäftsbedingungen</h2> <ol> <li> <h3>Duis autem vel eum iriure dolor.</h3> <p>Wie Deine Bank den Zinsanstieg übersteht</p> </li> </ol> </div> </div> </div> </div> <div class="modal fade fixed-modal" id="saveModal" tabindex="-1" role="dialog" aria-labelledby="saveModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h2 class="modal-title text-center">Enter name for simulation (optional)</h2> </div> <div class="modal-body"> <form> <div class="form-group"> <label class="sr-only" for="inputName">Name</label> <input type="text" class="form-control" name="gameName" id="gameName" placeholder="Name"> </div> <a href="#" class="btn btn-default submit-link left-space QuickSaveGame" id="QuickSaveGame" data-dismiss="modal">Save</a> <a href="/logout" class="btn btn-default submit-link left-space" id="DoLogout" data-dismiss="modal">Logout</a> </form> </div> <div class="modal-footer"> <a href="#" class="btn btn-default close-link left-space" data-dismiss="modal">Back</a> </div> </div> </div> </div> <div class="modal fade fixed-modal multi-step" id="guest-saveGame-modal" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <input type='hidden' id='showStep2' value="1" /> <div class="modal-header"> <h4 class="modal-title step-1" data-step="1">Step 1</h4> <h4 class="modal-title step-2" data-step="2">Step 2</h4> <div class="m-progress"> <div class="m-progress-bar-wrapper"> <div class="m-progress-bar"> </div> </div> <div class="m-progress-stats"> <span class="m-progress-current"> </span> / <span class="m-progress-total"> </span> </div> <div class="m-progress-complete"> Completed </div> </div> </div> <div class="modal-body step-1" data-step="1"> <h2 class="modal-title text-center">Registration Form</h2> <h3 class="infoMes">Please register to be able to save your game!</h3> </div> <div class="modal-body step-2" data-step="2"> <h2 class="modal-title text-center">Enter name for simulation (optional)</h2> <form> <div class="form-group"> <label class="sr-only" for="inputName">Name</label> <input type="text" class="form-control" name="gameName" placeholder="Name"> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary step step-1" data-step="1" onclick="regG('#guest-saveGame-modal', 2)">Submit</button> <button type="button" class="btn btn-primary step step-2" data-step="2" onclick="saveGames('guest-saveGame-modal');" data-dismiss="modal" id="QuickSaveGameGuest">Save</button> </div> </div> </div> </div> <script> sendEvent = function(sel, step) { $(sel).trigger('next.m.' + step); } </script> <script src="https://d3js.org/d3.v4.js"></script> <script src="/js/walkthroughmodal.js"></script> <script src="/js/multi-step-modal.js"></script> <script> //if (document.referrer=='http://i28.financetrainer.com/login') //setCookie("zinsentw_last_value", 'today', 36000); $body = $("body"); $(document).on({ ajaxStart: function() { $body.addClass("loading"); }, ajaxStop: function() { $body.removeClass("loading"); } }); var inFormOrLink = true; var St = false; (function(window,undefined){ var State = History.getState(); $('#step_back').hide(); console.log(State.url); // Bind to State Change History.Adapter.bind(window,'statechange',function(){ var State = History.getState(); console.log(History.getCurrentIndex()); console.log('State changed! - '+State.url); History.log('statechange:', State.data, State.title, State.url); if (State.data.state==undefined) {St = false; inFormOrLink = true; $('#step_back').hide(); } else {St = true; inFormOrLink = false;} }); })(window); /** * This javascript file checks for the brower/browser tab action. */ function wireUpEvents() { /** * For a list of events that triggers onbeforeunload on IE * check http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx * * onbeforeunload for IE and chrome * check http://stackoverflow.com/questions/1802930/setting-onbeforeunload-on-body-element-in-chrome-and-ie-using-jquery */ var dont_confirm_leave = inFormOrLink; //set dont_confirm_leave to 1 when you want the user to be able to leave without confirmation var leave_message = 'You sure you want to leave?' function goodbye(e) { if (gameInstance) { gameInstance = null; } window.dataLayer.push({ 'event':'ajaxComplete', 'category': 'Pages', 'action': 'closed_page', 'label': 'User level=', 'value': '' }); dont_confirm_leave = inFormOrLink; // if (!validNavigation) { // if (dont_confirm_leave!==1) { console.log(dont_confirm_leave); if (!dont_confirm_leave) { if(!e) e = window.event; //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = leave_message; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } //return works for Chrome and Safari return leave_message; } // } } window.onbeforeunload=goodbye; return false; } var userChoice = 0; function SwitchToRoom() { var swtch; var referrer = document.referrer; console.log('userChoice = '+userChoice); console.log ('fromLogin='+localStorage.getItem('FromLogin')); if (userChoice==1) { swtch = 1; // user clicks on Submit button userChoice = 0; }else if (userChoice==8) { swtch = 8; //UserChoice userChoice = 0; }else if (userChoice==2) { swtch = 7; //tutorial is skipped userChoice = 0; } else { //console.log('###IntroIsPassed = '+localStorage.getItem('IntroIsPassed')); swtch = 0; var x = localStorage.getItem('FromLogin'); if (x == 1) { swtch = 3; //show Welcome for Level localStorage.setItem('FromLogin', 0); } //console.log("From guest, " + localStorage.getItem('FromGuest')); x = localStorage.getItem('FromGuest'); if (x == 1) swtch = 5; //user came from guests var x = localStorage.getItem('SkipTutorial'); if (x == 1) { swtch = 7; //tutorial is skipped localStorage.setItem('SkipTutorial', 0); } if (referrer=='http://i28.financetrainer.com/users/request-reset-password' || referrer=='https://i28.financetrainer.com/users/request-reset-password') swtch = 6; //came from reset password page } console.log ('### swtch='+swtch); $.ajax({ type: "post", async: false, url: "/finance-trainer/api/games/getCurrentState/.json", data: {switch:swtch}, success: function (response) { console.log (response); if (response) { window.dataLayer.push({ 'event':'ajaxComplete', 'category': 'Room', 'action': 'change_to_room', 'label': 'change_to_room', 'value': response.res }); window.dataLayer.push({ 'event': 'i28-language', 'dimension3': response.res.language }); var st = JSON.stringify(response.res); console.log(st); $("#Imgcontainer").hide(); $('body').css('overflow-y', 'auto'); if (response.res.change_to_room != false) { if (response.res.change_to_room == 'start_intro') { localStorage.setItem('IntroIsPassed',1); } if (response.res.change_to_room == 'next_level') { localStorage.setItem('FromLogin',0); } window.dataLayer.push({ 'event': 'change_to_room', 'category': 'Room', 'action': 'change_to_room', 'label': response.res.change_to_room, 'value': response.res.change_to_room }); window.dataLayer.push({ 'event': 'sublevel_finished', 'category': 'Room', 'action': 'next_level', 'label': response.res.next_level, 'value': response.res.next_level }); gameInstance.SendMessage("API","GetVariables", st); resizeCanvas(true); gameInstance.SendMessage("API","SwitchToRoom"); } else { resizeCanvas(false); if (response.res.refuse!=undefined && response.res.refuse==1) { alert (lang.Refuse); } } } } }); return; } function SwitchToCockpit(reloadPage) { console.log ('reloadPage='+reloadPage); resizeCanvas(false); if (reloadPage=='True') { inFormOrLink = true; // localStorage.setItem('IntroIsPassed',0); // localStorage.setItem('NewLevel',1); window.location.href = '/parameters/reset'; //$('.graph-overflow').css('margin-top',0);inFormOrLink = true;localStorage.setItem('IntroIsPassed',0);window.location.href = '/parameters/reset'; } return; } function OnAppReady(){ console.log("### application is loaded"); // $("#Imgcontainer").hide(); // $('body').css('overflow-y', 'auto'); gameInstance.SendMessage("API","WebDomain", 'http://i28.financetrainer.com'); SwitchToRoom(); } function regG(sel, step){ //$('#GuestRegistration').on('click', function () { if ($('#gUsername').val()=='' || $('#gEmail').val()=='' || $('#gPassword').val()=='') { alert ('You have to set all required fields. Please, try again.'); return false; } else if ($('#err').val()==1) { alert ('Non-unique fields. Please, try again.'); return false; } else { if ($('#gPassword').val()!=$('#gPasswordConfirm').val()) { alert ('Passwords are not equal. Please, try again.'); return false; } else { // $('button.step').attr('disabled', false); var data = { 'first_name': $('#gFirstName').val(), 'last_name': $('#gLastName').val(), 'name': $('#gUsername').val(), 'funktion': $('#gFunktion').val(), 'email': $('#gEmail').val(), 'password': $('#gPassword').val() }; $.ajax({ type: "post", url: "/registerExGuest", data: data, success: function (response) { console.log(response); if (response) { inFormOrLink = true; if (response.success) { console.log (response); localStorage.setItem('FromGuest',1); if ($('#showStep2').val()==0) { // if it is just registration window.location.href = '/pages/homepage'; } else if ($('#showStep2').val()==2) { // if user tried to go to the HOF window.location.href = '/finance-trainer/games/hof'; } else { $(sel).trigger('next.m.' + step); } } else alert (response.message); } } }); } } //validation //}); } function saveGames(el){ var data = { 'name': $('#'+el+' input[name="gameName"]').val() }; $.ajax({ type: "post", url: "/finance-trainer/games/save", data: data, success: function (response) { if (response) { inFormOrLink = true; if (response.success) { alert (response.success); } else alert (response.error); // window.location.href = '/pages/homepage?fl=1'; window.location.href = '/pages/homepage'; } } }); } function resizeCanvas(p){ $("#Imgcontainer").css("display","none"); $('body').css('overflow-y', 'auto'); if (p==true) { window.scrollTo(0, 0); $("#gameContainer").css("visibility", "visible"); $("#gameContainer").css("z-index", "999999"); $('body').css('overflow', 'hidden'); } else { console.log ('is hidden gameContainer'); $("#gameContainer").css("visibility", "hidden"); $("#gameContainer").css("z-index", "0"); $('body').css('overflow-y', 'auto'); } return true; } // Wire up the events as soon as the DOM tree is ready $(document).ready(function() { wireUpEvents(); $("#logoutMenu a").on('click', function () { localStorage.setItem("IntroIsPassed",0); // localStorage.setItem("NewLevel",0); return true; }); ob = $('.alert-success'); if(ob.length > 0){ setTimeout(function() { $('.alert-success').slideUp(500); }, 5000); } $("#loading_room").show(); $('#RegMenu').on('click', function () { $('#showStep2').val(0); $('.infoMes').hide(); $('#guest-saveGame-modal .modal-header').hide(); $('#guest-saveGame-modal').modal('show'); return true; }); $('#HOFButton').on('click', function () { $('#showStep2').val(2); $('.infoMes').html('Please register to be able to use all features of our site, you will then also be able to save your game!').show(); $('#guest-saveGame-modal .modal-header').hide(); $('#guest-saveGame-modal').modal('show'); return true; }); $('#guest-saveGame-modal').on('hidden.bs.modal', function () { $('#guest-saveGame-modal form').trigger("reset"); $('.infoMes').html('Please register to be able to save your game!').show(); $('.ok, .error').hide(); $('#err').val(0); // $('button.step').attr('disabled', true); // updateProgress(1, total_num_steps); /// add thies line to reset to step 1. $('#guest-saveGame-modal').find('.step-1').show(); }); /* var timer2 = "30:01"; var interval = setInterval(function() { var timer = timer2.split(':'); //by parsing integer, I avoid all extra string processing var minutes = parseInt(timer[0], 10); var seconds = parseInt(timer[1], 10); --seconds; minutes = (seconds < 0) ? --minutes : minutes; seconds = (seconds < 0) ? 59 : seconds; seconds = (seconds < 10) ? '0' + seconds : seconds; //minutes = (minutes < 10) ? minutes : minutes; $('.countdown').html(minutes + ':' + seconds); if (minutes < 0) clearInterval(interval); //check if both minutes and seconds are 0 if ((seconds <= 0) && (minutes <= 0)) { $("#saveModal").modal(); minutes = "15"; seconds = "01"; // window.location.href = '/logout'; }; timer2 = minutes + ':' + seconds; }, 1000); */ }); </script> <div class="ajax"><!-- Place at bottom of page --></div> <script id="__debug_kit" data-id="6eaef7b2-ed63-49d7-aadc-d99bb0842b74" data-url="https://i28.financetrainer.com/" src="/debug_kit/js/toolbar.js?1639063274"></script></body> </html> ' } $maxBufferLength = (int) 8192 $file = '/var/www/i28d1/vendor/cakephp/cakephp/src/Error/Debugger.php' $line = (int) 856 $message = 'Unable to emit headers. Headers sent in file=/var/www/i28d1/vendor/cakephp/cakephp/src/Error/Debugger.php line=856'Cake\Core\BasePlugin::{closure}() - ROOT/vendor/cakephp/debug_kit/config/bootstrap.php, line 42 Cake\Http\ResponseEmitter::emit() - CORE/src/Http/ResponseEmitter.php, line 51 Cake\Http\Server::emit() - CORE/src/Http/Server.php, line 141 [main] - ROOT/webroot/index.php, line 43
Warning (2): Cannot modify header information - headers already sent by (output started at /var/www/i28d1/vendor/cakephp/cakephp/src/Error/Debugger.php:856) [CORE/src/Http/ResponseEmitter.php, line 152]Code Contextif ($previousHandler) {
return $previousHandler($code, $message, $file, $line, $context);
}
$response = object(Cake\Http\Response) { 'status' => (int) 200, 'contentType' => 'text/html', 'headers' => [ 'Content-Type' => [ [maximum depth reached] ], 'X-DEBUGKIT-ID' => [ [maximum depth reached] ] ], 'file' => null, 'fileRange' => [], 'cookies' => object(Cake\Http\Cookie\CookieCollection) {}, 'cacheDirectives' => [], 'body' => '<!DOCTYPE html> <html> <head> <script> dataLayer = [{ 'pageCategory': 'homepage', 'visitorType': '' // 'userLevel': '' // 'dimension1': '' }]; </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PFTVFLJ');</script> <!-- End Google Tag Manager --> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Wie Deine Bank den Zinsanstieg übersteht"> <meta http-equiv="Cache-Control" content="no-cache" /> <meta property="og:title" content="i28.financetrainer.com"> <meta property="og:description" content="Wie Deine Bank den Zinsanstieg übersteht"> <title>Finance Trainer</title> <link href="/favicon.ico" type="image/x-icon" rel="icon"/><link href="/favicon.ico" type="image/x-icon" rel="shortcut icon"/> <link rel="stylesheet" href="/css/vendor.min.css"/> <link rel="stylesheet" href="/css/main.css?v1.8"/> <link rel="stylesheet" href="/css/lobibox.min.css?v1.1"/> <!--[if IE]> <link rel="stylesheet" type="text/css" href="/css/main-ie.css?v1.1" /> <![endif]--> <link href="https://fonts.googleapis.com/css?family=Karla:400,400i,700,700i|Raleway|Lato" rel="stylesheet"> <script src="/js/ie.js"></script> <script src="/js/vendor.min.js"></script> <script src="/js/jquery.history.js"></script> <script src="/js/lobibox.min.js"></script> <style> .competition_mode {background: linear-gradient(to right, #462623 0%, #cb9b50 100%) !important;} #registerGuest .modal-dialog {width: 360px; height:600px !important; } #registerGuest .modal-header { background-color: #337AB7; padding:16px 16px; color:#FFF; border-bottom:2px dashed #337AB7; } #registerGuest .ok {color:#9FD010; font-style:italic;} #registerGuest .error {color:red; font-style:italic;} .m-progress-bar { min-height: 1em; background: #c12d2d; width: 5%; } .alert {position: absolute; width: 95%; top: 5px; z-index: 999999; } </style> <style> /* Start by setting display:none to make this hidden. Then we position it in relation to the viewport window with position:fixed. Width, height, top and left speak for themselves. Background we set to 80% white with our animation centered, and no-repeating */ .ajax { display: none; position: fixed; z-index: 1000; top: 0; left: 0; height: 100%; width: 100%; background: rgba( 255, 255, 255, .8 ) url('http://i.stack.imgur.com/FhHRx.gif') 50% 50% no-repeat; } /* When the body has the loading class, we turn the scrollbar off with overflow:hidden */ body.loading .ajax { overflow: hidden; } /* Anytime the body has the loading class, our modal element will be visible */ body.loading .ajax { display: block; } .lobibox-notify-msg {min-height:60px !important; max-height:none !important;} #gameContainer { width: 100vw; height: 92vh; } canvas { width: 100%; height: 100%; display: block; } /* try to handle mobile dialog */ canvas + * { z-index: 2; } .alert>p { color: #393939 !important; } .videoContainer { position: absolute; width: 100%; height: 100%; top: 0; left: 0; bottom: 0; right: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; } .videoContainer iframe { /* optional */ width: 100%; height: 100%; } header { position: fixed; top: 0; width: 100%; z-index: 999999; /* background: rgba(0, 0, 0, 0.5); color: #f1f1f1; padding: 20px; */ } .login_block input {height:50px; line-height:45px;} .navbar-nav > li {padding:10px;height: 90px;} </style> <script type="text/javascript"> var gameInstance; /* // Get IE or Edge browser version var version = detectIE(); //var version = msieversion(); console.log(version); if (version !== false && version < 12) { // alert ('it is IE'); window.location.href = 'http://i28.financetrainer.com/settings/browser'; } */ lang = { Zins: "interest", Volumen: "Volume", Success: "Parameters are saved", WrongFormat: "Please only enter numerical values!", WrongGapVal: "Only enter the specified volume", WrongStepN: "You cannot change the GAP's anymore.", WrongAllowGapChange1: "You can`t change the GAP more than ", WrongAllowGapChange2: "times", WarningTitle: "Info", DelayBeforeSubmit: "Check how your input affects the result...", ReloadingAfterSubmit: "Reloading, please, wait...", Benchmark: "XX to beat the Benchmark.", Refuse: "Performance has not improved.", } limit = 5000; var IntroIsPassed = localStorage.getItem('IntroIsPassed'); if (!IntroIsPassed) localStorage.setItem('IntroIsPassed',0); var FromGuest = localStorage.getItem('FromGuest'); if (!FromGuest) localStorage.setItem('FromGuest',0); var SkipTutorial = localStorage.getItem('SkipTutorial'); if (!SkipTutorial) localStorage.setItem('SkipTutorial',0); //var NewLevel = localStorage.getItem('NewLevel'); //if (!NewLevel) // localStorage.setItem('NewLevel',0); function changeLang(lang){ $.ajax({ type: "post", dataType: "json", cache: false, async: true, url: "/users/changeLang", data: {locale:lang}, success: function (response) { if (response.error) { alert (response.message); return false; } else { console.log('Switched to '+response.lang); inFormOrLink = 1; setTimeout(function(){ location.reload(true); },20); //window.location.reload(true); return true; } }, error: function(resp){ console.log(resp); return false; } }); return false; } function checkIfExist(val, field){ $.ajax({ type: "post", url: "/users/checkIfExist", data: {value:val}, success: function (response) { console.log (response); if (response.success) { $('#'+field+'_ok').html(response.message).show(); $('#'+field+'_err').hide(); // $('button.step').attr('disabled', false); $('#err').val(0); } else { $('#err').val(1); // $('button.step').attr('disabled', true); $('#'+response.field+'_ok').hide(); $('#'+response.field+'_err').html(response.message).show(); } } }); return false; } </script> </head> <body class=" "> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PFTVFLJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="container-fluid"> <header class="row"> <nav class="navbar navbar-default"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <a href="/" class="navbar-brand"><img src="/img/financetrainer.logo.png" alt="Finance Trainer"/></a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li class="menu-tipps"> <a href="/competition" style="margin-top: 10px;">Competition</a> </li> <li> <a href="/login" style="height: 35px;line-height:43px;">Login</a> </li> </ul> <style> /*Styling Selectbox*/ #langbox { display: inline-block; padding: 0; height: 40px; margin: 25px 25px 10px 0; vertical-align: top; position: absolute; right: 0; } #langbox .lang-menu { margin-top: 1px; z-index: 9 } #langbox .lang-menu li { padding: 10px; transition: all .2s ease-in-out; cursor: pointer; display: inline-block; } #langbox .lang-menu { padding: 0; list-style: none } #langbox .lang-menu li:hover { color: #999; } #langbox .lang-menu li.active { color: #007cc3; } </style> <script type="text/javascript"> $(document).ready(function() { $('#langbox .lang-menu li').click(function () { // var input = $(this).parents('.dropd').find('input').val(); var input = $(this).attr('id'); var self = $(this); $.ajax({ type: "post", dataType: "json", cache: false, async: true, url: "/users/changeLang", data: {locale:input}, success: function (response) { // $('#selectedLVal').html($('#'+input).html()); $('.lang').removeClass('active'); $(self).addClass('active'); if (response.error) { alert (response.message); } else { console.log('Switched to '+response.lang); inFormOrLink = 1; // setTimeout(function(){ location.reload(true); // },20); //window.location.reload(true); return true; } }, error: function(resp){ console.log(resp); } }); }); }); </script> <div id="langbox"> <ul class="lang-menu"> <li id="en" class="lang active">EN</li> / <li id="de" class="lang ">DE</li> </ul> </div> </div><!-- /.navbar-collapse --> </div><!-- /.container --> </nav> </header> <div id="content" style="margin-top:120px;"> <div class="container signin"> <div class="row"> <div class="col-xs-6 col-xs-offset-3"> <div class="row is-table-row"> <div class="col-xs-6 log-box"> <div class="row active-box"> <div class="col-xs-10 col-xs-offset-1"> <h2 class="text-center">Reset Password</h2> <h3 class="text-center">Please enter your email to reset your password.</h3> <form method="post" accept-charset="utf-8" role="form" action="/users/request-reset-password"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div> <input type="hidden" name="redirect" value="/"/> <fieldset> <div class="form-group text"><input type="text" name="reference" placeholder="Reference/Email *" id="reference" class="form-control"/></div> </fieldset> <p><button class="btn btn-xs btn-default" type="submit">Submit</button></p> </form> </div> </div> <div class="row inactive-box"> <div class="col-xs-10 col-xs-offset-1 text-center"> <p> <a href="/login" class="btn btn-xs btn-default">login</a> </p> <p> <a href="/register" class="btn btn-xs btn-default">Sign in</a> </p> </div> </div> </div> </div> </div> </div> </div> </div> <br/> <div class="container"> <div class="row"> <div class="col-md-12 text-right"> <a href="/"><img src="/img/financetrainer.logo.png" alt="Finance Trainer"/></a> </div> </div> </div> </div> <!-- Not-logged user's Modal --> <div class="modal fade fixed-modal" id="infoModal" tabindex="-1" role="dialog" aria-labelledby="infoModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> </div> <div class="modal-body"> <h2 class="modal-title text-center">Allgemeine Geschäftsbedingungen</h2> <ol> <li> <h3>Duis autem vel eum iriure dolor.</h3> <p>Wie Deine Bank den Zinsanstieg übersteht</p> </li> </ol> </div> </div> </div> </div> <div class="modal fade fixed-modal" id="saveModal" tabindex="-1" role="dialog" aria-labelledby="saveModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h2 class="modal-title text-center">Enter name for simulation (optional)</h2> </div> <div class="modal-body"> <form> <div class="form-group"> <label class="sr-only" for="inputName">Name</label> <input type="text" class="form-control" name="gameName" id="gameName" placeholder="Name"> </div> <a href="#" class="btn btn-default submit-link left-space QuickSaveGame" id="QuickSaveGame" data-dismiss="modal">Save</a> <a href="/logout" class="btn btn-default submit-link left-space" id="DoLogout" data-dismiss="modal">Logout</a> </form> </div> <div class="modal-footer"> <a href="#" class="btn btn-default close-link left-space" data-dismiss="modal">Back</a> </div> </div> </div> </div> <div class="modal fade fixed-modal multi-step" id="guest-saveGame-modal" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <input type='hidden' id='showStep2' value="1" /> <div class="modal-header"> <h4 class="modal-title step-1" data-step="1">Step 1</h4> <h4 class="modal-title step-2" data-step="2">Step 2</h4> <div class="m-progress"> <div class="m-progress-bar-wrapper"> <div class="m-progress-bar"> </div> </div> <div class="m-progress-stats"> <span class="m-progress-current"> </span> / <span class="m-progress-total"> </span> </div> <div class="m-progress-complete"> Completed </div> </div> </div> <div class="modal-body step-1" data-step="1"> <h2 class="modal-title text-center">Registration Form</h2> <h3 class="infoMes">Please register to be able to save your game!</h3> </div> <div class="modal-body step-2" data-step="2"> <h2 class="modal-title text-center">Enter name for simulation (optional)</h2> <form> <div class="form-group"> <label class="sr-only" for="inputName">Name</label> <input type="text" class="form-control" name="gameName" placeholder="Name"> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary step step-1" data-step="1" onclick="regG('#guest-saveGame-modal', 2)">Submit</button> <button type="button" class="btn btn-primary step step-2" data-step="2" onclick="saveGames('guest-saveGame-modal');" data-dismiss="modal" id="QuickSaveGameGuest">Save</button> </div> </div> </div> </div> <script> sendEvent = function(sel, step) { $(sel).trigger('next.m.' + step); } </script> <script src="https://d3js.org/d3.v4.js"></script> <script src="/js/walkthroughmodal.js"></script> <script src="/js/multi-step-modal.js"></script> <script> //if (document.referrer=='http://i28.financetrainer.com/login') //setCookie("zinsentw_last_value", 'today', 36000); $body = $("body"); $(document).on({ ajaxStart: function() { $body.addClass("loading"); }, ajaxStop: function() { $body.removeClass("loading"); } }); var inFormOrLink = true; var St = false; (function(window,undefined){ var State = History.getState(); $('#step_back').hide(); console.log(State.url); // Bind to State Change History.Adapter.bind(window,'statechange',function(){ var State = History.getState(); console.log(History.getCurrentIndex()); console.log('State changed! - '+State.url); History.log('statechange:', State.data, State.title, State.url); if (State.data.state==undefined) {St = false; inFormOrLink = true; $('#step_back').hide(); } else {St = true; inFormOrLink = false;} }); })(window); /** * This javascript file checks for the brower/browser tab action. */ function wireUpEvents() { /** * For a list of events that triggers onbeforeunload on IE * check http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx * * onbeforeunload for IE and chrome * check http://stackoverflow.com/questions/1802930/setting-onbeforeunload-on-body-element-in-chrome-and-ie-using-jquery */ var dont_confirm_leave = inFormOrLink; //set dont_confirm_leave to 1 when you want the user to be able to leave without confirmation var leave_message = 'You sure you want to leave?' function goodbye(e) { if (gameInstance) { gameInstance = null; } window.dataLayer.push({ 'event':'ajaxComplete', 'category': 'Pages', 'action': 'closed_page', 'label': 'User level=', 'value': '' }); dont_confirm_leave = inFormOrLink; // if (!validNavigation) { // if (dont_confirm_leave!==1) { console.log(dont_confirm_leave); if (!dont_confirm_leave) { if(!e) e = window.event; //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = leave_message; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } //return works for Chrome and Safari return leave_message; } // } } window.onbeforeunload=goodbye; return false; } var userChoice = 0; function SwitchToRoom() { var swtch; var referrer = document.referrer; console.log('userChoice = '+userChoice); console.log ('fromLogin='+localStorage.getItem('FromLogin')); if (userChoice==1) { swtch = 1; // user clicks on Submit button userChoice = 0; }else if (userChoice==8) { swtch = 8; //UserChoice userChoice = 0; }else if (userChoice==2) { swtch = 7; //tutorial is skipped userChoice = 0; } else { //console.log('###IntroIsPassed = '+localStorage.getItem('IntroIsPassed')); swtch = 0; var x = localStorage.getItem('FromLogin'); if (x == 1) { swtch = 3; //show Welcome for Level localStorage.setItem('FromLogin', 0); } //console.log("From guest, " + localStorage.getItem('FromGuest')); x = localStorage.getItem('FromGuest'); if (x == 1) swtch = 5; //user came from guests var x = localStorage.getItem('SkipTutorial'); if (x == 1) { swtch = 7; //tutorial is skipped localStorage.setItem('SkipTutorial', 0); } if (referrer=='http://i28.financetrainer.com/users/request-reset-password' || referrer=='https://i28.financetrainer.com/users/request-reset-password') swtch = 6; //came from reset password page } console.log ('### swtch='+swtch); $.ajax({ type: "post", async: false, url: "/finance-trainer/api/games/getCurrentState/.json", data: {switch:swtch}, success: function (response) { console.log (response); if (response) { window.dataLayer.push({ 'event':'ajaxComplete', 'category': 'Room', 'action': 'change_to_room', 'label': 'change_to_room', 'value': response.res }); window.dataLayer.push({ 'event': 'i28-language', 'dimension3': response.res.language }); var st = JSON.stringify(response.res); console.log(st); $("#Imgcontainer").hide(); $('body').css('overflow-y', 'auto'); if (response.res.change_to_room != false) { if (response.res.change_to_room == 'start_intro') { localStorage.setItem('IntroIsPassed',1); } if (response.res.change_to_room == 'next_level') { localStorage.setItem('FromLogin',0); } window.dataLayer.push({ 'event': 'change_to_room', 'category': 'Room', 'action': 'change_to_room', 'label': response.res.change_to_room, 'value': response.res.change_to_room }); window.dataLayer.push({ 'event': 'sublevel_finished', 'category': 'Room', 'action': 'next_level', 'label': response.res.next_level, 'value': response.res.next_level }); gameInstance.SendMessage("API","GetVariables", st); resizeCanvas(true); gameInstance.SendMessage("API","SwitchToRoom"); } else { resizeCanvas(false); if (response.res.refuse!=undefined && response.res.refuse==1) { alert (lang.Refuse); } } } } }); return; } function SwitchToCockpit(reloadPage) { console.log ('reloadPage='+reloadPage); resizeCanvas(false); if (reloadPage=='True') { inFormOrLink = true; // localStorage.setItem('IntroIsPassed',0); // localStorage.setItem('NewLevel',1); window.location.href = '/parameters/reset'; //$('.graph-overflow').css('margin-top',0);inFormOrLink = true;localStorage.setItem('IntroIsPassed',0);window.location.href = '/parameters/reset'; } return; } function OnAppReady(){ console.log("### application is loaded"); // $("#Imgcontainer").hide(); // $('body').css('overflow-y', 'auto'); gameInstance.SendMessage("API","WebDomain", 'http://i28.financetrainer.com'); SwitchToRoom(); } function regG(sel, step){ //$('#GuestRegistration').on('click', function () { if ($('#gUsername').val()=='' || $('#gEmail').val()=='' || $('#gPassword').val()=='') { alert ('You have to set all required fields. Please, try again.'); return false; } else if ($('#err').val()==1) { alert ('Non-unique fields. Please, try again.'); return false; } else { if ($('#gPassword').val()!=$('#gPasswordConfirm').val()) { alert ('Passwords are not equal. Please, try again.'); return false; } else { // $('button.step').attr('disabled', false); var data = { 'first_name': $('#gFirstName').val(), 'last_name': $('#gLastName').val(), 'name': $('#gUsername').val(), 'funktion': $('#gFunktion').val(), 'email': $('#gEmail').val(), 'password': $('#gPassword').val() }; $.ajax({ type: "post", url: "/registerExGuest", data: data, success: function (response) { console.log(response); if (response) { inFormOrLink = true; if (response.success) { console.log (response); localStorage.setItem('FromGuest',1); if ($('#showStep2').val()==0) { // if it is just registration window.location.href = '/pages/homepage'; } else if ($('#showStep2').val()==2) { // if user tried to go to the HOF window.location.href = '/finance-trainer/games/hof'; } else { $(sel).trigger('next.m.' + step); } } else alert (response.message); } } }); } } //validation //}); } function saveGames(el){ var data = { 'name': $('#'+el+' input[name="gameName"]').val() }; $.ajax({ type: "post", url: "/finance-trainer/games/save", data: data, success: function (response) { if (response) { inFormOrLink = true; if (response.success) { alert (response.success); } else alert (response.error); // window.location.href = '/pages/homepage?fl=1'; window.location.href = '/pages/homepage'; } } }); } function resizeCanvas(p){ $("#Imgcontainer").css("display","none"); $('body').css('overflow-y', 'auto'); if (p==true) { window.scrollTo(0, 0); $("#gameContainer").css("visibility", "visible"); $("#gameContainer").css("z-index", "999999"); $('body').css('overflow', 'hidden'); } else { console.log ('is hidden gameContainer'); $("#gameContainer").css("visibility", "hidden"); $("#gameContainer").css("z-index", "0"); $('body').css('overflow-y', 'auto'); } return true; } // Wire up the events as soon as the DOM tree is ready $(document).ready(function() { wireUpEvents(); $("#logoutMenu a").on('click', function () { localStorage.setItem("IntroIsPassed",0); // localStorage.setItem("NewLevel",0); return true; }); ob = $('.alert-success'); if(ob.length > 0){ setTimeout(function() { $('.alert-success').slideUp(500); }, 5000); } $("#loading_room").show(); $('#RegMenu').on('click', function () { $('#showStep2').val(0); $('.infoMes').hide(); $('#guest-saveGame-modal .modal-header').hide(); $('#guest-saveGame-modal').modal('show'); return true; }); $('#HOFButton').on('click', function () { $('#showStep2').val(2); $('.infoMes').html('Please register to be able to use all features of our site, you will then also be able to save your game!').show(); $('#guest-saveGame-modal .modal-header').hide(); $('#guest-saveGame-modal').modal('show'); return true; }); $('#guest-saveGame-modal').on('hidden.bs.modal', function () { $('#guest-saveGame-modal form').trigger("reset"); $('.infoMes').html('Please register to be able to save your game!').show(); $('.ok, .error').hide(); $('#err').val(0); // $('button.step').attr('disabled', true); // updateProgress(1, total_num_steps); /// add thies line to reset to step 1. $('#guest-saveGame-modal').find('.step-1').show(); }); /* var timer2 = "30:01"; var interval = setInterval(function() { var timer = timer2.split(':'); //by parsing integer, I avoid all extra string processing var minutes = parseInt(timer[0], 10); var seconds = parseInt(timer[1], 10); --seconds; minutes = (seconds < 0) ? --minutes : minutes; seconds = (seconds < 0) ? 59 : seconds; seconds = (seconds < 10) ? '0' + seconds : seconds; //minutes = (minutes < 10) ? minutes : minutes; $('.countdown').html(minutes + ':' + seconds); if (minutes < 0) clearInterval(interval); //check if both minutes and seconds are 0 if ((seconds <= 0) && (minutes <= 0)) { $("#saveModal").modal(); minutes = "15"; seconds = "01"; // window.location.href = '/logout'; }; timer2 = minutes + ':' + seconds; }, 1000); */ }); </script> <div class="ajax"><!-- Place at bottom of page --></div> <script id="__debug_kit" data-id="6eaef7b2-ed63-49d7-aadc-d99bb0842b74" data-url="https://i28.financetrainer.com/" src="/debug_kit/js/toolbar.js?1639063274"></script></body> </html> ' } $reasonPhrase = 'OK'Cake\Core\BasePlugin::{closure}() - ROOT/vendor/cakephp/debug_kit/config/bootstrap.php, line 42 header - [internal], line ?? Cake\Http\ResponseEmitter::emitStatusLine() - CORE/src/Http/ResponseEmitter.php, line 152 Cake\Http\ResponseEmitter::emit() - CORE/src/Http/ResponseEmitter.php, line 57 Cake\Http\Server::emit() - CORE/src/Http/Server.php, line 141 [main] - ROOT/webroot/index.php, line 43
Warning (2): Cannot modify header information - headers already sent by (output started at /var/www/i28d1/vendor/cakephp/cakephp/src/Error/Debugger.php:856) [CORE/src/Http/ResponseEmitter.php, line 181]Code Contextif ($previousHandler) {
return $previousHandler($code, $message, $file, $line, $context);
}
$response = object(Cake\Http\Response) { 'status' => (int) 200, 'contentType' => 'text/html', 'headers' => [ 'Content-Type' => [ [maximum depth reached] ], 'X-DEBUGKIT-ID' => [ [maximum depth reached] ] ], 'file' => null, 'fileRange' => [], 'cookies' => object(Cake\Http\Cookie\CookieCollection) {}, 'cacheDirectives' => [], 'body' => '<!DOCTYPE html> <html> <head> <script> dataLayer = [{ 'pageCategory': 'homepage', 'visitorType': '' // 'userLevel': '' // 'dimension1': '' }]; </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PFTVFLJ');</script> <!-- End Google Tag Manager --> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Wie Deine Bank den Zinsanstieg übersteht"> <meta http-equiv="Cache-Control" content="no-cache" /> <meta property="og:title" content="i28.financetrainer.com"> <meta property="og:description" content="Wie Deine Bank den Zinsanstieg übersteht"> <title>Finance Trainer</title> <link href="/favicon.ico" type="image/x-icon" rel="icon"/><link href="/favicon.ico" type="image/x-icon" rel="shortcut icon"/> <link rel="stylesheet" href="/css/vendor.min.css"/> <link rel="stylesheet" href="/css/main.css?v1.8"/> <link rel="stylesheet" href="/css/lobibox.min.css?v1.1"/> <!--[if IE]> <link rel="stylesheet" type="text/css" href="/css/main-ie.css?v1.1" /> <![endif]--> <link href="https://fonts.googleapis.com/css?family=Karla:400,400i,700,700i|Raleway|Lato" rel="stylesheet"> <script src="/js/ie.js"></script> <script src="/js/vendor.min.js"></script> <script src="/js/jquery.history.js"></script> <script src="/js/lobibox.min.js"></script> <style> .competition_mode {background: linear-gradient(to right, #462623 0%, #cb9b50 100%) !important;} #registerGuest .modal-dialog {width: 360px; height:600px !important; } #registerGuest .modal-header { background-color: #337AB7; padding:16px 16px; color:#FFF; border-bottom:2px dashed #337AB7; } #registerGuest .ok {color:#9FD010; font-style:italic;} #registerGuest .error {color:red; font-style:italic;} .m-progress-bar { min-height: 1em; background: #c12d2d; width: 5%; } .alert {position: absolute; width: 95%; top: 5px; z-index: 999999; } </style> <style> /* Start by setting display:none to make this hidden. Then we position it in relation to the viewport window with position:fixed. Width, height, top and left speak for themselves. Background we set to 80% white with our animation centered, and no-repeating */ .ajax { display: none; position: fixed; z-index: 1000; top: 0; left: 0; height: 100%; width: 100%; background: rgba( 255, 255, 255, .8 ) url('http://i.stack.imgur.com/FhHRx.gif') 50% 50% no-repeat; } /* When the body has the loading class, we turn the scrollbar off with overflow:hidden */ body.loading .ajax { overflow: hidden; } /* Anytime the body has the loading class, our modal element will be visible */ body.loading .ajax { display: block; } .lobibox-notify-msg {min-height:60px !important; max-height:none !important;} #gameContainer { width: 100vw; height: 92vh; } canvas { width: 100%; height: 100%; display: block; } /* try to handle mobile dialog */ canvas + * { z-index: 2; } .alert>p { color: #393939 !important; } .videoContainer { position: absolute; width: 100%; height: 100%; top: 0; left: 0; bottom: 0; right: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; } .videoContainer iframe { /* optional */ width: 100%; height: 100%; } header { position: fixed; top: 0; width: 100%; z-index: 999999; /* background: rgba(0, 0, 0, 0.5); color: #f1f1f1; padding: 20px; */ } .login_block input {height:50px; line-height:45px;} .navbar-nav > li {padding:10px;height: 90px;} </style> <script type="text/javascript"> var gameInstance; /* // Get IE or Edge browser version var version = detectIE(); //var version = msieversion(); console.log(version); if (version !== false && version < 12) { // alert ('it is IE'); window.location.href = 'http://i28.financetrainer.com/settings/browser'; } */ lang = { Zins: "interest", Volumen: "Volume", Success: "Parameters are saved", WrongFormat: "Please only enter numerical values!", WrongGapVal: "Only enter the specified volume", WrongStepN: "You cannot change the GAP's anymore.", WrongAllowGapChange1: "You can`t change the GAP more than ", WrongAllowGapChange2: "times", WarningTitle: "Info", DelayBeforeSubmit: "Check how your input affects the result...", ReloadingAfterSubmit: "Reloading, please, wait...", Benchmark: "XX to beat the Benchmark.", Refuse: "Performance has not improved.", } limit = 5000; var IntroIsPassed = localStorage.getItem('IntroIsPassed'); if (!IntroIsPassed) localStorage.setItem('IntroIsPassed',0); var FromGuest = localStorage.getItem('FromGuest'); if (!FromGuest) localStorage.setItem('FromGuest',0); var SkipTutorial = localStorage.getItem('SkipTutorial'); if (!SkipTutorial) localStorage.setItem('SkipTutorial',0); //var NewLevel = localStorage.getItem('NewLevel'); //if (!NewLevel) // localStorage.setItem('NewLevel',0); function changeLang(lang){ $.ajax({ type: "post", dataType: "json", cache: false, async: true, url: "/users/changeLang", data: {locale:lang}, success: function (response) { if (response.error) { alert (response.message); return false; } else { console.log('Switched to '+response.lang); inFormOrLink = 1; setTimeout(function(){ location.reload(true); },20); //window.location.reload(true); return true; } }, error: function(resp){ console.log(resp); return false; } }); return false; } function checkIfExist(val, field){ $.ajax({ type: "post", url: "/users/checkIfExist", data: {value:val}, success: function (response) { console.log (response); if (response.success) { $('#'+field+'_ok').html(response.message).show(); $('#'+field+'_err').hide(); // $('button.step').attr('disabled', false); $('#err').val(0); } else { $('#err').val(1); // $('button.step').attr('disabled', true); $('#'+response.field+'_ok').hide(); $('#'+response.field+'_err').html(response.message).show(); } } }); return false; } </script> </head> <body class=" "> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PFTVFLJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="container-fluid"> <header class="row"> <nav class="navbar navbar-default"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <a href="/" class="navbar-brand"><img src="/img/financetrainer.logo.png" alt="Finance Trainer"/></a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li class="menu-tipps"> <a href="/competition" style="margin-top: 10px;">Competition</a> </li> <li> <a href="/login" style="height: 35px;line-height:43px;">Login</a> </li> </ul> <style> /*Styling Selectbox*/ #langbox { display: inline-block; padding: 0; height: 40px; margin: 25px 25px 10px 0; vertical-align: top; position: absolute; right: 0; } #langbox .lang-menu { margin-top: 1px; z-index: 9 } #langbox .lang-menu li { padding: 10px; transition: all .2s ease-in-out; cursor: pointer; display: inline-block; } #langbox .lang-menu { padding: 0; list-style: none } #langbox .lang-menu li:hover { color: #999; } #langbox .lang-menu li.active { color: #007cc3; } </style> <script type="text/javascript"> $(document).ready(function() { $('#langbox .lang-menu li').click(function () { // var input = $(this).parents('.dropd').find('input').val(); var input = $(this).attr('id'); var self = $(this); $.ajax({ type: "post", dataType: "json", cache: false, async: true, url: "/users/changeLang", data: {locale:input}, success: function (response) { // $('#selectedLVal').html($('#'+input).html()); $('.lang').removeClass('active'); $(self).addClass('active'); if (response.error) { alert (response.message); } else { console.log('Switched to '+response.lang); inFormOrLink = 1; // setTimeout(function(){ location.reload(true); // },20); //window.location.reload(true); return true; } }, error: function(resp){ console.log(resp); } }); }); }); </script> <div id="langbox"> <ul class="lang-menu"> <li id="en" class="lang active">EN</li> / <li id="de" class="lang ">DE</li> </ul> </div> </div><!-- /.navbar-collapse --> </div><!-- /.container --> </nav> </header> <div id="content" style="margin-top:120px;"> <div class="container signin"> <div class="row"> <div class="col-xs-6 col-xs-offset-3"> <div class="row is-table-row"> <div class="col-xs-6 log-box"> <div class="row active-box"> <div class="col-xs-10 col-xs-offset-1"> <h2 class="text-center">Reset Password</h2> <h3 class="text-center">Please enter your email to reset your password.</h3> <form method="post" accept-charset="utf-8" role="form" action="/users/request-reset-password"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div> <input type="hidden" name="redirect" value="/"/> <fieldset> <div class="form-group text"><input type="text" name="reference" placeholder="Reference/Email *" id="reference" class="form-control"/></div> </fieldset> <p><button class="btn btn-xs btn-default" type="submit">Submit</button></p> </form> </div> </div> <div class="row inactive-box"> <div class="col-xs-10 col-xs-offset-1 text-center"> <p> <a href="/login" class="btn btn-xs btn-default">login</a> </p> <p> <a href="/register" class="btn btn-xs btn-default">Sign in</a> </p> </div> </div> </div> </div> </div> </div> </div> </div> <br/> <div class="container"> <div class="row"> <div class="col-md-12 text-right"> <a href="/"><img src="/img/financetrainer.logo.png" alt="Finance Trainer"/></a> </div> </div> </div> </div> <!-- Not-logged user's Modal --> <div class="modal fade fixed-modal" id="infoModal" tabindex="-1" role="dialog" aria-labelledby="infoModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> </div> <div class="modal-body"> <h2 class="modal-title text-center">Allgemeine Geschäftsbedingungen</h2> <ol> <li> <h3>Duis autem vel eum iriure dolor.</h3> <p>Wie Deine Bank den Zinsanstieg übersteht</p> </li> </ol> </div> </div> </div> </div> <div class="modal fade fixed-modal" id="saveModal" tabindex="-1" role="dialog" aria-labelledby="saveModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h2 class="modal-title text-center">Enter name for simulation (optional)</h2> </div> <div class="modal-body"> <form> <div class="form-group"> <label class="sr-only" for="inputName">Name</label> <input type="text" class="form-control" name="gameName" id="gameName" placeholder="Name"> </div> <a href="#" class="btn btn-default submit-link left-space QuickSaveGame" id="QuickSaveGame" data-dismiss="modal">Save</a> <a href="/logout" class="btn btn-default submit-link left-space" id="DoLogout" data-dismiss="modal">Logout</a> </form> </div> <div class="modal-footer"> <a href="#" class="btn btn-default close-link left-space" data-dismiss="modal">Back</a> </div> </div> </div> </div> <div class="modal fade fixed-modal multi-step" id="guest-saveGame-modal" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <input type='hidden' id='showStep2' value="1" /> <div class="modal-header"> <h4 class="modal-title step-1" data-step="1">Step 1</h4> <h4 class="modal-title step-2" data-step="2">Step 2</h4> <div class="m-progress"> <div class="m-progress-bar-wrapper"> <div class="m-progress-bar"> </div> </div> <div class="m-progress-stats"> <span class="m-progress-current"> </span> / <span class="m-progress-total"> </span> </div> <div class="m-progress-complete"> Completed </div> </div> </div> <div class="modal-body step-1" data-step="1"> <h2 class="modal-title text-center">Registration Form</h2> <h3 class="infoMes">Please register to be able to save your game!</h3> </div> <div class="modal-body step-2" data-step="2"> <h2 class="modal-title text-center">Enter name for simulation (optional)</h2> <form> <div class="form-group"> <label class="sr-only" for="inputName">Name</label> <input type="text" class="form-control" name="gameName" placeholder="Name"> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary step step-1" data-step="1" onclick="regG('#guest-saveGame-modal', 2)">Submit</button> <button type="button" class="btn btn-primary step step-2" data-step="2" onclick="saveGames('guest-saveGame-modal');" data-dismiss="modal" id="QuickSaveGameGuest">Save</button> </div> </div> </div> </div> <script> sendEvent = function(sel, step) { $(sel).trigger('next.m.' + step); } </script> <script src="https://d3js.org/d3.v4.js"></script> <script src="/js/walkthroughmodal.js"></script> <script src="/js/multi-step-modal.js"></script> <script> //if (document.referrer=='http://i28.financetrainer.com/login') //setCookie("zinsentw_last_value", 'today', 36000); $body = $("body"); $(document).on({ ajaxStart: function() { $body.addClass("loading"); }, ajaxStop: function() { $body.removeClass("loading"); } }); var inFormOrLink = true; var St = false; (function(window,undefined){ var State = History.getState(); $('#step_back').hide(); console.log(State.url); // Bind to State Change History.Adapter.bind(window,'statechange',function(){ var State = History.getState(); console.log(History.getCurrentIndex()); console.log('State changed! - '+State.url); History.log('statechange:', State.data, State.title, State.url); if (State.data.state==undefined) {St = false; inFormOrLink = true; $('#step_back').hide(); } else {St = true; inFormOrLink = false;} }); })(window); /** * This javascript file checks for the brower/browser tab action. */ function wireUpEvents() { /** * For a list of events that triggers onbeforeunload on IE * check http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx * * onbeforeunload for IE and chrome * check http://stackoverflow.com/questions/1802930/setting-onbeforeunload-on-body-element-in-chrome-and-ie-using-jquery */ var dont_confirm_leave = inFormOrLink; //set dont_confirm_leave to 1 when you want the user to be able to leave without confirmation var leave_message = 'You sure you want to leave?' function goodbye(e) { if (gameInstance) { gameInstance = null; } window.dataLayer.push({ 'event':'ajaxComplete', 'category': 'Pages', 'action': 'closed_page', 'label': 'User level=', 'value': '' }); dont_confirm_leave = inFormOrLink; // if (!validNavigation) { // if (dont_confirm_leave!==1) { console.log(dont_confirm_leave); if (!dont_confirm_leave) { if(!e) e = window.event; //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = leave_message; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } //return works for Chrome and Safari return leave_message; } // } } window.onbeforeunload=goodbye; return false; } var userChoice = 0; function SwitchToRoom() { var swtch; var referrer = document.referrer; console.log('userChoice = '+userChoice); console.log ('fromLogin='+localStorage.getItem('FromLogin')); if (userChoice==1) { swtch = 1; // user clicks on Submit button userChoice = 0; }else if (userChoice==8) { swtch = 8; //UserChoice userChoice = 0; }else if (userChoice==2) { swtch = 7; //tutorial is skipped userChoice = 0; } else { //console.log('###IntroIsPassed = '+localStorage.getItem('IntroIsPassed')); swtch = 0; var x = localStorage.getItem('FromLogin'); if (x == 1) { swtch = 3; //show Welcome for Level localStorage.setItem('FromLogin', 0); } //console.log("From guest, " + localStorage.getItem('FromGuest')); x = localStorage.getItem('FromGuest'); if (x == 1) swtch = 5; //user came from guests var x = localStorage.getItem('SkipTutorial'); if (x == 1) { swtch = 7; //tutorial is skipped localStorage.setItem('SkipTutorial', 0); } if (referrer=='http://i28.financetrainer.com/users/request-reset-password' || referrer=='https://i28.financetrainer.com/users/request-reset-password') swtch = 6; //came from reset password page } console.log ('### swtch='+swtch); $.ajax({ type: "post", async: false, url: "/finance-trainer/api/games/getCurrentState/.json", data: {switch:swtch}, success: function (response) { console.log (response); if (response) { window.dataLayer.push({ 'event':'ajaxComplete', 'category': 'Room', 'action': 'change_to_room', 'label': 'change_to_room', 'value': response.res }); window.dataLayer.push({ 'event': 'i28-language', 'dimension3': response.res.language }); var st = JSON.stringify(response.res); console.log(st); $("#Imgcontainer").hide(); $('body').css('overflow-y', 'auto'); if (response.res.change_to_room != false) { if (response.res.change_to_room == 'start_intro') { localStorage.setItem('IntroIsPassed',1); } if (response.res.change_to_room == 'next_level') { localStorage.setItem('FromLogin',0); } window.dataLayer.push({ 'event': 'change_to_room', 'category': 'Room', 'action': 'change_to_room', 'label': response.res.change_to_room, 'value': response.res.change_to_room }); window.dataLayer.push({ 'event': 'sublevel_finished', 'category': 'Room', 'action': 'next_level', 'label': response.res.next_level, 'value': response.res.next_level }); gameInstance.SendMessage("API","GetVariables", st); resizeCanvas(true); gameInstance.SendMessage("API","SwitchToRoom"); } else { resizeCanvas(false); if (response.res.refuse!=undefined && response.res.refuse==1) { alert (lang.Refuse); } } } } }); return; } function SwitchToCockpit(reloadPage) { console.log ('reloadPage='+reloadPage); resizeCanvas(false); if (reloadPage=='True') { inFormOrLink = true; // localStorage.setItem('IntroIsPassed',0); // localStorage.setItem('NewLevel',1); window.location.href = '/parameters/reset'; //$('.graph-overflow').css('margin-top',0);inFormOrLink = true;localStorage.setItem('IntroIsPassed',0);window.location.href = '/parameters/reset'; } return; } function OnAppReady(){ console.log("### application is loaded"); // $("#Imgcontainer").hide(); // $('body').css('overflow-y', 'auto'); gameInstance.SendMessage("API","WebDomain", 'http://i28.financetrainer.com'); SwitchToRoom(); } function regG(sel, step){ //$('#GuestRegistration').on('click', function () { if ($('#gUsername').val()=='' || $('#gEmail').val()=='' || $('#gPassword').val()=='') { alert ('You have to set all required fields. Please, try again.'); return false; } else if ($('#err').val()==1) { alert ('Non-unique fields. Please, try again.'); return false; } else { if ($('#gPassword').val()!=$('#gPasswordConfirm').val()) { alert ('Passwords are not equal. Please, try again.'); return false; } else { // $('button.step').attr('disabled', false); var data = { 'first_name': $('#gFirstName').val(), 'last_name': $('#gLastName').val(), 'name': $('#gUsername').val(), 'funktion': $('#gFunktion').val(), 'email': $('#gEmail').val(), 'password': $('#gPassword').val() }; $.ajax({ type: "post", url: "/registerExGuest", data: data, success: function (response) { console.log(response); if (response) { inFormOrLink = true; if (response.success) { console.log (response); localStorage.setItem('FromGuest',1); if ($('#showStep2').val()==0) { // if it is just registration window.location.href = '/pages/homepage'; } else if ($('#showStep2').val()==2) { // if user tried to go to the HOF window.location.href = '/finance-trainer/games/hof'; } else { $(sel).trigger('next.m.' + step); } } else alert (response.message); } } }); } } //validation //}); } function saveGames(el){ var data = { 'name': $('#'+el+' input[name="gameName"]').val() }; $.ajax({ type: "post", url: "/finance-trainer/games/save", data: data, success: function (response) { if (response) { inFormOrLink = true; if (response.success) { alert (response.success); } else alert (response.error); // window.location.href = '/pages/homepage?fl=1'; window.location.href = '/pages/homepage'; } } }); } function resizeCanvas(p){ $("#Imgcontainer").css("display","none"); $('body').css('overflow-y', 'auto'); if (p==true) { window.scrollTo(0, 0); $("#gameContainer").css("visibility", "visible"); $("#gameContainer").css("z-index", "999999"); $('body').css('overflow', 'hidden'); } else { console.log ('is hidden gameContainer'); $("#gameContainer").css("visibility", "hidden"); $("#gameContainer").css("z-index", "0"); $('body').css('overflow-y', 'auto'); } return true; } // Wire up the events as soon as the DOM tree is ready $(document).ready(function() { wireUpEvents(); $("#logoutMenu a").on('click', function () { localStorage.setItem("IntroIsPassed",0); // localStorage.setItem("NewLevel",0); return true; }); ob = $('.alert-success'); if(ob.length > 0){ setTimeout(function() { $('.alert-success').slideUp(500); }, 5000); } $("#loading_room").show(); $('#RegMenu').on('click', function () { $('#showStep2').val(0); $('.infoMes').hide(); $('#guest-saveGame-modal .modal-header').hide(); $('#guest-saveGame-modal').modal('show'); return true; }); $('#HOFButton').on('click', function () { $('#showStep2').val(2); $('.infoMes').html('Please register to be able to use all features of our site, you will then also be able to save your game!').show(); $('#guest-saveGame-modal .modal-header').hide(); $('#guest-saveGame-modal').modal('show'); return true; }); $('#guest-saveGame-modal').on('hidden.bs.modal', function () { $('#guest-saveGame-modal form').trigger("reset"); $('.infoMes').html('Please register to be able to save your game!').show(); $('.ok, .error').hide(); $('#err').val(0); // $('button.step').attr('disabled', true); // updateProgress(1, total_num_steps); /// add thies line to reset to step 1. $('#guest-saveGame-modal').find('.step-1').show(); }); /* var timer2 = "30:01"; var interval = setInterval(function() { var timer = timer2.split(':'); //by parsing integer, I avoid all extra string processing var minutes = parseInt(timer[0], 10); var seconds = parseInt(timer[1], 10); --seconds; minutes = (seconds < 0) ? --minutes : minutes; seconds = (seconds < 0) ? 59 : seconds; seconds = (seconds < 10) ? '0' + seconds : seconds; //minutes = (minutes < 10) ? minutes : minutes; $('.countdown').html(minutes + ':' + seconds); if (minutes < 0) clearInterval(interval); //check if both minutes and seconds are 0 if ((seconds <= 0) && (minutes <= 0)) { $("#saveModal").modal(); minutes = "15"; seconds = "01"; // window.location.href = '/logout'; }; timer2 = minutes + ':' + seconds; }, 1000); */ }); </script> <div class="ajax"><!-- Place at bottom of page --></div> <script id="__debug_kit" data-id="6eaef7b2-ed63-49d7-aadc-d99bb0842b74" data-url="https://i28.financetrainer.com/" src="/debug_kit/js/toolbar.js?1639063274"></script></body> </html> ' } $cookies = [] $values = [ (int) 0 => 'text/html; charset=UTF-8' ] $name = 'Content-Type' $first = true $value = 'text/html; charset=UTF-8'Cake\Core\BasePlugin::{closure}() - ROOT/vendor/cakephp/debug_kit/config/bootstrap.php, line 42 header - [internal], line ?? Cake\Http\ResponseEmitter::emitHeaders() - CORE/src/Http/ResponseEmitter.php, line 181 Cake\Http\ResponseEmitter::emit() - CORE/src/Http/ResponseEmitter.php, line 58 Cake\Http\Server::emit() - CORE/src/Http/Server.php, line 141 [main] - ROOT/webroot/index.php, line 43
Warning (2): Cannot modify header information - headers already sent by (output started at /var/www/i28d1/vendor/cakephp/cakephp/src/Error/Debugger.php:856) [CORE/src/Http/ResponseEmitter.php, line 181]Code Contextif ($previousHandler) {
return $previousHandler($code, $message, $file, $line, $context);
}
$response = object(Cake\Http\Response) { 'status' => (int) 200, 'contentType' => 'text/html', 'headers' => [ 'Content-Type' => [ [maximum depth reached] ], 'X-DEBUGKIT-ID' => [ [maximum depth reached] ] ], 'file' => null, 'fileRange' => [], 'cookies' => object(Cake\Http\Cookie\CookieCollection) {}, 'cacheDirectives' => [], 'body' => '<!DOCTYPE html> <html> <head> <script> dataLayer = [{ 'pageCategory': 'homepage', 'visitorType': '' // 'userLevel': '' // 'dimension1': '' }]; </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PFTVFLJ');</script> <!-- End Google Tag Manager --> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Wie Deine Bank den Zinsanstieg übersteht"> <meta http-equiv="Cache-Control" content="no-cache" /> <meta property="og:title" content="i28.financetrainer.com"> <meta property="og:description" content="Wie Deine Bank den Zinsanstieg übersteht"> <title>Finance Trainer</title> <link href="/favicon.ico" type="image/x-icon" rel="icon"/><link href="/favicon.ico" type="image/x-icon" rel="shortcut icon"/> <link rel="stylesheet" href="/css/vendor.min.css"/> <link rel="stylesheet" href="/css/main.css?v1.8"/> <link rel="stylesheet" href="/css/lobibox.min.css?v1.1"/> <!--[if IE]> <link rel="stylesheet" type="text/css" href="/css/main-ie.css?v1.1" /> <![endif]--> <link href="https://fonts.googleapis.com/css?family=Karla:400,400i,700,700i|Raleway|Lato" rel="stylesheet"> <script src="/js/ie.js"></script> <script src="/js/vendor.min.js"></script> <script src="/js/jquery.history.js"></script> <script src="/js/lobibox.min.js"></script> <style> .competition_mode {background: linear-gradient(to right, #462623 0%, #cb9b50 100%) !important;} #registerGuest .modal-dialog {width: 360px; height:600px !important; } #registerGuest .modal-header { background-color: #337AB7; padding:16px 16px; color:#FFF; border-bottom:2px dashed #337AB7; } #registerGuest .ok {color:#9FD010; font-style:italic;} #registerGuest .error {color:red; font-style:italic;} .m-progress-bar { min-height: 1em; background: #c12d2d; width: 5%; } .alert {position: absolute; width: 95%; top: 5px; z-index: 999999; } </style> <style> /* Start by setting display:none to make this hidden. Then we position it in relation to the viewport window with position:fixed. Width, height, top and left speak for themselves. Background we set to 80% white with our animation centered, and no-repeating */ .ajax { display: none; position: fixed; z-index: 1000; top: 0; left: 0; height: 100%; width: 100%; background: rgba( 255, 255, 255, .8 ) url('http://i.stack.imgur.com/FhHRx.gif') 50% 50% no-repeat; } /* When the body has the loading class, we turn the scrollbar off with overflow:hidden */ body.loading .ajax { overflow: hidden; } /* Anytime the body has the loading class, our modal element will be visible */ body.loading .ajax { display: block; } .lobibox-notify-msg {min-height:60px !important; max-height:none !important;} #gameContainer { width: 100vw; height: 92vh; } canvas { width: 100%; height: 100%; display: block; } /* try to handle mobile dialog */ canvas + * { z-index: 2; } .alert>p { color: #393939 !important; } .videoContainer { position: absolute; width: 100%; height: 100%; top: 0; left: 0; bottom: 0; right: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; } .videoContainer iframe { /* optional */ width: 100%; height: 100%; } header { position: fixed; top: 0; width: 100%; z-index: 999999; /* background: rgba(0, 0, 0, 0.5); color: #f1f1f1; padding: 20px; */ } .login_block input {height:50px; line-height:45px;} .navbar-nav > li {padding:10px;height: 90px;} </style> <script type="text/javascript"> var gameInstance; /* // Get IE or Edge browser version var version = detectIE(); //var version = msieversion(); console.log(version); if (version !== false && version < 12) { // alert ('it is IE'); window.location.href = 'http://i28.financetrainer.com/settings/browser'; } */ lang = { Zins: "interest", Volumen: "Volume", Success: "Parameters are saved", WrongFormat: "Please only enter numerical values!", WrongGapVal: "Only enter the specified volume", WrongStepN: "You cannot change the GAP's anymore.", WrongAllowGapChange1: "You can`t change the GAP more than ", WrongAllowGapChange2: "times", WarningTitle: "Info", DelayBeforeSubmit: "Check how your input affects the result...", ReloadingAfterSubmit: "Reloading, please, wait...", Benchmark: "XX to beat the Benchmark.", Refuse: "Performance has not improved.", } limit = 5000; var IntroIsPassed = localStorage.getItem('IntroIsPassed'); if (!IntroIsPassed) localStorage.setItem('IntroIsPassed',0); var FromGuest = localStorage.getItem('FromGuest'); if (!FromGuest) localStorage.setItem('FromGuest',0); var SkipTutorial = localStorage.getItem('SkipTutorial'); if (!SkipTutorial) localStorage.setItem('SkipTutorial',0); //var NewLevel = localStorage.getItem('NewLevel'); //if (!NewLevel) // localStorage.setItem('NewLevel',0); function changeLang(lang){ $.ajax({ type: "post", dataType: "json", cache: false, async: true, url: "/users/changeLang", data: {locale:lang}, success: function (response) { if (response.error) { alert (response.message); return false; } else { console.log('Switched to '+response.lang); inFormOrLink = 1; setTimeout(function(){ location.reload(true); },20); //window.location.reload(true); return true; } }, error: function(resp){ console.log(resp); return false; } }); return false; } function checkIfExist(val, field){ $.ajax({ type: "post", url: "/users/checkIfExist", data: {value:val}, success: function (response) { console.log (response); if (response.success) { $('#'+field+'_ok').html(response.message).show(); $('#'+field+'_err').hide(); // $('button.step').attr('disabled', false); $('#err').val(0); } else { $('#err').val(1); // $('button.step').attr('disabled', true); $('#'+response.field+'_ok').hide(); $('#'+response.field+'_err').html(response.message).show(); } } }); return false; } </script> </head> <body class=" "> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PFTVFLJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="container-fluid"> <header class="row"> <nav class="navbar navbar-default"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <a href="/" class="navbar-brand"><img src="/img/financetrainer.logo.png" alt="Finance Trainer"/></a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li class="menu-tipps"> <a href="/competition" style="margin-top: 10px;">Competition</a> </li> <li> <a href="/login" style="height: 35px;line-height:43px;">Login</a> </li> </ul> <style> /*Styling Selectbox*/ #langbox { display: inline-block; padding: 0; height: 40px; margin: 25px 25px 10px 0; vertical-align: top; position: absolute; right: 0; } #langbox .lang-menu { margin-top: 1px; z-index: 9 } #langbox .lang-menu li { padding: 10px; transition: all .2s ease-in-out; cursor: pointer; display: inline-block; } #langbox .lang-menu { padding: 0; list-style: none } #langbox .lang-menu li:hover { color: #999; } #langbox .lang-menu li.active { color: #007cc3; } </style> <script type="text/javascript"> $(document).ready(function() { $('#langbox .lang-menu li').click(function () { // var input = $(this).parents('.dropd').find('input').val(); var input = $(this).attr('id'); var self = $(this); $.ajax({ type: "post", dataType: "json", cache: false, async: true, url: "/users/changeLang", data: {locale:input}, success: function (response) { // $('#selectedLVal').html($('#'+input).html()); $('.lang').removeClass('active'); $(self).addClass('active'); if (response.error) { alert (response.message); } else { console.log('Switched to '+response.lang); inFormOrLink = 1; // setTimeout(function(){ location.reload(true); // },20); //window.location.reload(true); return true; } }, error: function(resp){ console.log(resp); } }); }); }); </script> <div id="langbox"> <ul class="lang-menu"> <li id="en" class="lang active">EN</li> / <li id="de" class="lang ">DE</li> </ul> </div> </div><!-- /.navbar-collapse --> </div><!-- /.container --> </nav> </header> <div id="content" style="margin-top:120px;"> <div class="container signin"> <div class="row"> <div class="col-xs-6 col-xs-offset-3"> <div class="row is-table-row"> <div class="col-xs-6 log-box"> <div class="row active-box"> <div class="col-xs-10 col-xs-offset-1"> <h2 class="text-center">Reset Password</h2> <h3 class="text-center">Please enter your email to reset your password.</h3> <form method="post" accept-charset="utf-8" role="form" action="/users/request-reset-password"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div> <input type="hidden" name="redirect" value="/"/> <fieldset> <div class="form-group text"><input type="text" name="reference" placeholder="Reference/Email *" id="reference" class="form-control"/></div> </fieldset> <p><button class="btn btn-xs btn-default" type="submit">Submit</button></p> </form> </div> </div> <div class="row inactive-box"> <div class="col-xs-10 col-xs-offset-1 text-center"> <p> <a href="/login" class="btn btn-xs btn-default">login</a> </p> <p> <a href="/register" class="btn btn-xs btn-default">Sign in</a> </p> </div> </div> </div> </div> </div> </div> </div> </div> <br/> <div class="container"> <div class="row"> <div class="col-md-12 text-right"> <a href="/"><img src="/img/financetrainer.logo.png" alt="Finance Trainer"/></a> </div> </div> </div> </div> <!-- Not-logged user's Modal --> <div class="modal fade fixed-modal" id="infoModal" tabindex="-1" role="dialog" aria-labelledby="infoModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> </div> <div class="modal-body"> <h2 class="modal-title text-center">Allgemeine Geschäftsbedingungen</h2> <ol> <li> <h3>Duis autem vel eum iriure dolor.</h3> <p>Wie Deine Bank den Zinsanstieg übersteht</p> </li> </ol> </div> </div> </div> </div> <div class="modal fade fixed-modal" id="saveModal" tabindex="-1" role="dialog" aria-labelledby="saveModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h2 class="modal-title text-center">Enter name for simulation (optional)</h2> </div> <div class="modal-body"> <form> <div class="form-group"> <label class="sr-only" for="inputName">Name</label> <input type="text" class="form-control" name="gameName" id="gameName" placeholder="Name"> </div> <a href="#" class="btn btn-default submit-link left-space QuickSaveGame" id="QuickSaveGame" data-dismiss="modal">Save</a> <a href="/logout" class="btn btn-default submit-link left-space" id="DoLogout" data-dismiss="modal">Logout</a> </form> </div> <div class="modal-footer"> <a href="#" class="btn btn-default close-link left-space" data-dismiss="modal">Back</a> </div> </div> </div> </div> <div class="modal fade fixed-modal multi-step" id="guest-saveGame-modal" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <input type='hidden' id='showStep2' value="1" /> <div class="modal-header"> <h4 class="modal-title step-1" data-step="1">Step 1</h4> <h4 class="modal-title step-2" data-step="2">Step 2</h4> <div class="m-progress"> <div class="m-progress-bar-wrapper"> <div class="m-progress-bar"> </div> </div> <div class="m-progress-stats"> <span class="m-progress-current"> </span> / <span class="m-progress-total"> </span> </div> <div class="m-progress-complete"> Completed </div> </div> </div> <div class="modal-body step-1" data-step="1"> <h2 class="modal-title text-center">Registration Form</h2> <h3 class="infoMes">Please register to be able to save your game!</h3> </div> <div class="modal-body step-2" data-step="2"> <h2 class="modal-title text-center">Enter name for simulation (optional)</h2> <form> <div class="form-group"> <label class="sr-only" for="inputName">Name</label> <input type="text" class="form-control" name="gameName" placeholder="Name"> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary step step-1" data-step="1" onclick="regG('#guest-saveGame-modal', 2)">Submit</button> <button type="button" class="btn btn-primary step step-2" data-step="2" onclick="saveGames('guest-saveGame-modal');" data-dismiss="modal" id="QuickSaveGameGuest">Save</button> </div> </div> </div> </div> <script> sendEvent = function(sel, step) { $(sel).trigger('next.m.' + step); } </script> <script src="https://d3js.org/d3.v4.js"></script> <script src="/js/walkthroughmodal.js"></script> <script src="/js/multi-step-modal.js"></script> <script> //if (document.referrer=='http://i28.financetrainer.com/login') //setCookie("zinsentw_last_value", 'today', 36000); $body = $("body"); $(document).on({ ajaxStart: function() { $body.addClass("loading"); }, ajaxStop: function() { $body.removeClass("loading"); } }); var inFormOrLink = true; var St = false; (function(window,undefined){ var State = History.getState(); $('#step_back').hide(); console.log(State.url); // Bind to State Change History.Adapter.bind(window,'statechange',function(){ var State = History.getState(); console.log(History.getCurrentIndex()); console.log('State changed! - '+State.url); History.log('statechange:', State.data, State.title, State.url); if (State.data.state==undefined) {St = false; inFormOrLink = true; $('#step_back').hide(); } else {St = true; inFormOrLink = false;} }); })(window); /** * This javascript file checks for the brower/browser tab action. */ function wireUpEvents() { /** * For a list of events that triggers onbeforeunload on IE * check http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx * * onbeforeunload for IE and chrome * check http://stackoverflow.com/questions/1802930/setting-onbeforeunload-on-body-element-in-chrome-and-ie-using-jquery */ var dont_confirm_leave = inFormOrLink; //set dont_confirm_leave to 1 when you want the user to be able to leave without confirmation var leave_message = 'You sure you want to leave?' function goodbye(e) { if (gameInstance) { gameInstance = null; } window.dataLayer.push({ 'event':'ajaxComplete', 'category': 'Pages', 'action': 'closed_page', 'label': 'User level=', 'value': '' }); dont_confirm_leave = inFormOrLink; // if (!validNavigation) { // if (dont_confirm_leave!==1) { console.log(dont_confirm_leave); if (!dont_confirm_leave) { if(!e) e = window.event; //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = leave_message; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } //return works for Chrome and Safari return leave_message; } // } } window.onbeforeunload=goodbye; return false; } var userChoice = 0; function SwitchToRoom() { var swtch; var referrer = document.referrer; console.log('userChoice = '+userChoice); console.log ('fromLogin='+localStorage.getItem('FromLogin')); if (userChoice==1) { swtch = 1; // user clicks on Submit button userChoice = 0; }else if (userChoice==8) { swtch = 8; //UserChoice userChoice = 0; }else if (userChoice==2) { swtch = 7; //tutorial is skipped userChoice = 0; } else { //console.log('###IntroIsPassed = '+localStorage.getItem('IntroIsPassed')); swtch = 0; var x = localStorage.getItem('FromLogin'); if (x == 1) { swtch = 3; //show Welcome for Level localStorage.setItem('FromLogin', 0); } //console.log("From guest, " + localStorage.getItem('FromGuest')); x = localStorage.getItem('FromGuest'); if (x == 1) swtch = 5; //user came from guests var x = localStorage.getItem('SkipTutorial'); if (x == 1) { swtch = 7; //tutorial is skipped localStorage.setItem('SkipTutorial', 0); } if (referrer=='http://i28.financetrainer.com/users/request-reset-password' || referrer=='https://i28.financetrainer.com/users/request-reset-password') swtch = 6; //came from reset password page } console.log ('### swtch='+swtch); $.ajax({ type: "post", async: false, url: "/finance-trainer/api/games/getCurrentState/.json", data: {switch:swtch}, success: function (response) { console.log (response); if (response) { window.dataLayer.push({ 'event':'ajaxComplete', 'category': 'Room', 'action': 'change_to_room', 'label': 'change_to_room', 'value': response.res }); window.dataLayer.push({ 'event': 'i28-language', 'dimension3': response.res.language }); var st = JSON.stringify(response.res); console.log(st); $("#Imgcontainer").hide(); $('body').css('overflow-y', 'auto'); if (response.res.change_to_room != false) { if (response.res.change_to_room == 'start_intro') { localStorage.setItem('IntroIsPassed',1); } if (response.res.change_to_room == 'next_level') { localStorage.setItem('FromLogin',0); } window.dataLayer.push({ 'event': 'change_to_room', 'category': 'Room', 'action': 'change_to_room', 'label': response.res.change_to_room, 'value': response.res.change_to_room }); window.dataLayer.push({ 'event': 'sublevel_finished', 'category': 'Room', 'action': 'next_level', 'label': response.res.next_level, 'value': response.res.next_level }); gameInstance.SendMessage("API","GetVariables", st); resizeCanvas(true); gameInstance.SendMessage("API","SwitchToRoom"); } else { resizeCanvas(false); if (response.res.refuse!=undefined && response.res.refuse==1) { alert (lang.Refuse); } } } } }); return; } function SwitchToCockpit(reloadPage) { console.log ('reloadPage='+reloadPage); resizeCanvas(false); if (reloadPage=='True') { inFormOrLink = true; // localStorage.setItem('IntroIsPassed',0); // localStorage.setItem('NewLevel',1); window.location.href = '/parameters/reset'; //$('.graph-overflow').css('margin-top',0);inFormOrLink = true;localStorage.setItem('IntroIsPassed',0);window.location.href = '/parameters/reset'; } return; } function OnAppReady(){ console.log("### application is loaded"); // $("#Imgcontainer").hide(); // $('body').css('overflow-y', 'auto'); gameInstance.SendMessage("API","WebDomain", 'http://i28.financetrainer.com'); SwitchToRoom(); } function regG(sel, step){ //$('#GuestRegistration').on('click', function () { if ($('#gUsername').val()=='' || $('#gEmail').val()=='' || $('#gPassword').val()=='') { alert ('You have to set all required fields. Please, try again.'); return false; } else if ($('#err').val()==1) { alert ('Non-unique fields. Please, try again.'); return false; } else { if ($('#gPassword').val()!=$('#gPasswordConfirm').val()) { alert ('Passwords are not equal. Please, try again.'); return false; } else { // $('button.step').attr('disabled', false); var data = { 'first_name': $('#gFirstName').val(), 'last_name': $('#gLastName').val(), 'name': $('#gUsername').val(), 'funktion': $('#gFunktion').val(), 'email': $('#gEmail').val(), 'password': $('#gPassword').val() }; $.ajax({ type: "post", url: "/registerExGuest", data: data, success: function (response) { console.log(response); if (response) { inFormOrLink = true; if (response.success) { console.log (response); localStorage.setItem('FromGuest',1); if ($('#showStep2').val()==0) { // if it is just registration window.location.href = '/pages/homepage'; } else if ($('#showStep2').val()==2) { // if user tried to go to the HOF window.location.href = '/finance-trainer/games/hof'; } else { $(sel).trigger('next.m.' + step); } } else alert (response.message); } } }); } } //validation //}); } function saveGames(el){ var data = { 'name': $('#'+el+' input[name="gameName"]').val() }; $.ajax({ type: "post", url: "/finance-trainer/games/save", data: data, success: function (response) { if (response) { inFormOrLink = true; if (response.success) { alert (response.success); } else alert (response.error); // window.location.href = '/pages/homepage?fl=1'; window.location.href = '/pages/homepage'; } } }); } function resizeCanvas(p){ $("#Imgcontainer").css("display","none"); $('body').css('overflow-y', 'auto'); if (p==true) { window.scrollTo(0, 0); $("#gameContainer").css("visibility", "visible"); $("#gameContainer").css("z-index", "999999"); $('body').css('overflow', 'hidden'); } else { console.log ('is hidden gameContainer'); $("#gameContainer").css("visibility", "hidden"); $("#gameContainer").css("z-index", "0"); $('body').css('overflow-y', 'auto'); } return true; } // Wire up the events as soon as the DOM tree is ready $(document).ready(function() { wireUpEvents(); $("#logoutMenu a").on('click', function () { localStorage.setItem("IntroIsPassed",0); // localStorage.setItem("NewLevel",0); return true; }); ob = $('.alert-success'); if(ob.length > 0){ setTimeout(function() { $('.alert-success').slideUp(500); }, 5000); } $("#loading_room").show(); $('#RegMenu').on('click', function () { $('#showStep2').val(0); $('.infoMes').hide(); $('#guest-saveGame-modal .modal-header').hide(); $('#guest-saveGame-modal').modal('show'); return true; }); $('#HOFButton').on('click', function () { $('#showStep2').val(2); $('.infoMes').html('Please register to be able to use all features of our site, you will then also be able to save your game!').show(); $('#guest-saveGame-modal .modal-header').hide(); $('#guest-saveGame-modal').modal('show'); return true; }); $('#guest-saveGame-modal').on('hidden.bs.modal', function () { $('#guest-saveGame-modal form').trigger("reset"); $('.infoMes').html('Please register to be able to save your game!').show(); $('.ok, .error').hide(); $('#err').val(0); // $('button.step').attr('disabled', true); // updateProgress(1, total_num_steps); /// add thies line to reset to step 1. $('#guest-saveGame-modal').find('.step-1').show(); }); /* var timer2 = "30:01"; var interval = setInterval(function() { var timer = timer2.split(':'); //by parsing integer, I avoid all extra string processing var minutes = parseInt(timer[0], 10); var seconds = parseInt(timer[1], 10); --seconds; minutes = (seconds < 0) ? --minutes : minutes; seconds = (seconds < 0) ? 59 : seconds; seconds = (seconds < 10) ? '0' + seconds : seconds; //minutes = (minutes < 10) ? minutes : minutes; $('.countdown').html(minutes + ':' + seconds); if (minutes < 0) clearInterval(interval); //check if both minutes and seconds are 0 if ((seconds <= 0) && (minutes <= 0)) { $("#saveModal").modal(); minutes = "15"; seconds = "01"; // window.location.href = '/logout'; }; timer2 = minutes + ':' + seconds; }, 1000); */ }); </script> <div class="ajax"><!-- Place at bottom of page --></div> <script id="__debug_kit" data-id="6eaef7b2-ed63-49d7-aadc-d99bb0842b74" data-url="https://i28.financetrainer.com/" src="/debug_kit/js/toolbar.js?1639063274"></script></body> </html> ' } $cookies = [] $values = [ (int) 0 => '6eaef7b2-ed63-49d7-aadc-d99bb0842b74' ] $name = 'X-DEBUGKIT-ID' $first = true $value = '6eaef7b2-ed63-49d7-aadc-d99bb0842b74'Cake\Core\BasePlugin::{closure}() - ROOT/vendor/cakephp/debug_kit/config/bootstrap.php, line 42 header - [internal], line ?? Cake\Http\ResponseEmitter::emitHeaders() - CORE/src/Http/ResponseEmitter.php, line 181 Cake\Http\ResponseEmitter::emit() - CORE/src/Http/ResponseEmitter.php, line 58 Cake\Http\Server::emit() - CORE/src/Http/Server.php, line 141 [main] - ROOT/webroot/index.php, line 43
Wie Deine Bank den Zinsanstieg übersteht