$(document).ready(function() { //------------------------------------------------------------------ // show notifications. //------------------------------------------------------------------ function notify(msg,mode) { $.bootstrapGrowl(msg, { type: mode, delay: 2000, }); } //------------------------------------------------------------------ // Password field handler (show/hide password) //------------------------------------------------------------------ function togglePasswd(inp,img,mode) { var elem = document.getElementById(inp); var icon = $(img); mode = (mode == "toggle" ? (elem.type === "password" ? "text" : "password") : mode); if (mode == "text") { elem.type = "text"; icon.removeClass("fa-lock"); icon.addClass("fa-unlock-alt"); } else if (mode == "password") { elem.type = "password"; icon.removeClass("fa-unlock-alt"); icon.addClass("fa-lock"); } } //------------------------------------------------------------------ // Show final report status (success/failure) //------------------------------------------------------------------ function showReport(msg) { // switch off all except report $('#reset').addClass('hidden'); $('#change').addClass('hidden'); $('#report').removeClass('hidden'); // display message $('#report-txt').text(msg); } //------------------------------------------------------------------ // start-up entry point //------------------------------------------------------------------ // disable "NoJavascript" section $('#nojs').addClass('hidden'); // check for anchor (switch dialog) var anchor = window.location.hash; if (anchor.length > 1) { anchor = anchor.substr(1); // check token var form = new FormData(); form.append('token', anchor); $.ajax({ type: 'POST', url: 'checktk.php', data: form, contentType: false, processData: false, async: false, success: function(response) { var resp = JSON.parse(response); if (resp.status == "SUCCESS") { // switch dialog to "change password" $('#reset').addClass('hidden'); $('#change').removeClass('hidden'); } else { showReport("Ungültiger Link: " + resp.error); anchor = ""; } }, error: function(xhr, error){ showReport("Datenbank-Verbindung fehlgeschlagen. Bitte versuchen Sie es später nochmal."); anchor = ""; } }); } //------------------------------------------------------------------ // reset password //------------------------------------------------------------------ // handle change in email field $('#email').on('input', function() { var addr = $(this).val(); var color = "#f88"; var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; var ok = emailReg.test(addr); if (ok) { color = "#8f8"; } $('#email-icon').css("background-color", color); $('#btn-reset').prop("disabled", !ok); }); // handle click on form button "send reset email" $('button.reset').on('click', function() { // assemble form data var form = new FormData(); form.append('email', $('#email').val()); $('#email').val(''); $.ajax({ type: 'POST', url: 'resetpw.php', data: form, contentType: false, processData: false, success: function(response) { var resp = JSON.parse(response); if (resp.status == "SUCCESS") { showReport("Reset-EMail erfolgreich verschickt."); } else { showReport("Fehler aufgetreten: " + resp.status + " (" + resp.error + ")"); } }, error: function (xhr, ajaxOptions, thrownError) { showReport("Fehler aufgetreten: " + thrownError); } }); $('#email-icon').css("background-color", '#f88'); $('#btn-reset').prop("disabled", true); }); //------------------------------------------------------------------ // change password //------------------------------------------------------------------ // handle change in primary password field $('#pw1').on('input', function() { var pw = $(this).val(); var score = pw.length/12; var color = "#f88"; var ok = false; if (score >= 1) { color = "#8f8"; ok = true; } else if (score >= 0.5) { color = "#ff8"; ok = true; } $('#showpw1').css("background-color", color); $('#pw2').prop("disabled", !ok); }); // handle change in confirmation password field $('#pw2').on('input', function() { var pw = $(this).val(); var pw1 = $('#pw1').val(); $('#btn-change').prop("disabled", pw != pw1); if (pw == pw1) { $('#showpw2').css("background-color", "#8f8"); } else { $('#showpw2').css("background-color", "#f88"); } }); // handle click on form button "set new password" $('button.change').on('click', function() { // assemble form data var form = new FormData(); form.append('passwd', $('#pw1').val()); form.append('token', anchor); $.ajax({ type: 'POST', url: 'changepw.php', data: form, contentType: false, processData: false, success: function(response) { var resp = JSON.parse(response); if (resp.status == "SUCCESS") { showReport("Passwort erfolgreich geändert."); } else { showReport("Fehler aufgetreten: " + resp.status + " (" + resp.error + ")"); } }, error: function (xhr, ajaxOptions, thrownError) { showReport("Fehler aufgetreten: " + thrownError); } }); $('#pw1').val(''); $('#pw2').val(''); $('#showpw1').css("background-color", "#f88"); $('#showpw2').css("background-color", "#f88"); $('#pw2').prop("disabled", true); $('#btn-change').prop("disabled", true); }); // handle password show/hide $('#showpw1').on('click', function() { togglePasswd('pw1', '#pw1icon', 'toggle'); }); $('#showpw2').on('click', function() { togglePasswd('pw2', '#pw2icon', 'toggle'); }); });