/* ---------------------------------------- START OF: /cms_files/components/cms/modules/contactform/js/script.js */ $(document).ready(function() { // Find contactforms var forms = $('form[data-type="contact-form"]'); $.each(forms, function(key, item) { item = $(item); var formHash = item.attr('data-hash'); // Create input item.append(''); }); }); /* ---------------------------------------- END OF: /cms_files/components/cms/modules/contactform/js/script.js */ /* ---------------------------------------- START OF: /cms_files/components/cms/modules/blog/js/script.js */ $(document).ready(function() { // Find contactforms var forms = $('form[data-type="blog-form"]'); $.each(forms, function(key, item) { item = $(item); var formHash = item.attr('data-hash'); // Create input item.append(''); }); }); function cms_blog_submitComment(el) { var form = $(el).closest('form'); var fields = ['name', 'email', 'comment']; var formValid = true; $.each(fields, function(key, item) { var field = form.find('[name="'+item+'"]'); if (item == 'email' && field.val() != '') { if (field.val().indexOf('@') == -1 || field.val().indexOf('.') == -1) { alert(__('Vul een geldig e-mail adres in.')); formValid = false; return false; } } else if (item != 'email') { if (field.val() == '') { formValid = false; return false; } } }); if (!formValid) { alert(__('Vul alle verplichte velden in.')); return false; } else { form.trigger("submit"); } } function cms_blog_commentAnswer(el, level1, level2) { el = $(el); var parent = el.closest('.cms-blog-comment').find('.cms-blog-comment-name').first().text(); var wrapper = el.closest('.cms-blog-item-wrapper'); var form = wrapper.find('form').first(); form.find('.cms-blog-answer').show(); form.find('.cms-blog-answer-to').text(parent); form.find('[name=blog_respond_to]').val(level1); form.find('[name=blog_respond_to_2]').val(level2); // Scroll to the form window.scrollTo(0, form.offset().top - 250); } function cms_blog_cancelAnswer(el) { el = $(el); var wrapper = el.closest('.cms-blog-item-wrapper'); var form = wrapper.find('form').first(); form.find('.cms-blog-answer').hide(); form.find('.cms-blog-answer-to').text(''); form.find('[name=blog_respond_to]').val(''); form.find('[name=blog_respond_to_2]').val(''); } function cms_blog_showComments(el) { el = $(el); // Scroll to the form window.scrollTo(0, $('.cms-blog-comments-container').first().offset().top - 250); } /* ---------------------------------------- END OF: /cms_files/components/cms/modules/blog/js/script.js */ /* ---------------------------------------- START OF: /cms_files/components/cms/modules/formbuilder/js/script.js */ $(document).ready(function() { $('.formbuilder-submitbutton').on('click', formbuilder_submitForm); // Find contactforms var forms = $('form[data-type="custom-form"]'); $.each(forms, function(key, item) { item = $(item); var formHash = item.attr('data-hash'); // Create input item.append(''); }); }); function formbuilder_submitForm(e) { var button = $(e.target); var form = $($(button).parents('form')); e.preventDefault(); if (form.length == 0) { alert('Fout'); return false; } else { // Validate var validations = form.find('.form-group'); var formOk = true; $.each(validations, function(key, item) { item = $(item); if (item.attr('data-mandatory') == '1') { // Check if field is set switch(item.attr('data-type')) { case 'file': var value = $(item.find('input')).val(); if (value == '') { formOk = false; item.addClass('error'); } else { item.removeClass('error'); } break; case 'text': case 'appendedtext': case 'prependedtext': var value = $(item.find('input')).val(); if (value == '') { formOk = false; item.addClass('error'); } else { item.removeClass('error'); } break; case 'checkbox': var checkboxes = item.find('input'); var checked = false; $.each(checkboxes, function(checkKey, checkItem) { if ($(checkItem).prop('checked') === true) { checked = true; return false; } }); if (!checked) { formOk = false; item.addClass('error'); } else { item.removeClass('error'); } break; case 'radio': var radios = item.find('input'); var checked = false; $.each(radios, function(checkKey, checkItem) { if ($(checkItem).prop('checked') === true) { checked = true; } }); if (checked === false) { formOk = false; item.addClass('error'); } else { item.removeClass('error'); } break; case 'dropdown': var value = $(item.find('select')).val(); if (value == '') { formOk = false; item.addClass('error'); } else { item.removeClass('error'); } break; case 'textarea': var value = $(item.find('textarea')).val(); if (value == '') { formOk = false; item.addClass('error'); } else { item.removeClass('error'); } break; } } }); if (formOk === true) { form[0].submit(); } } return false; } /* ---------------------------------------- END OF: /cms_files/components/cms/modules/formbuilder/js/script.js */ /* ---------------------------------------- START OF: /cms_files/components/cms/modules/menu/js/script.js */ $(document).ready(function() { // Activate parent LI if child active $('.module-menu').find('li.active').parents('li').addClass('active'); }); function menu_toggleMobileMenu(id) { var menu = $('#'+id); if (menu.parent().prop('tagName').toLowerCase() != 'body') { menu.appendTo('body'); } // Show the menu menu.animate({ 'left': '0px' }); } function menu_closeMobileMenu(id) { var menu = $('#'+id); if (menu.parent().prop('tagName').toLowerCase() != 'body') { menu.appendTo('body'); } menu.animate({ 'left': '-90vw' }); } function menu_showSubMenu(el) { el = $(el); var submenu = el.closest('li').children('.menu-mobile-submenu').eq(0); submenu.toggle(); } /* ---------------------------------------- END OF: /cms_files/components/cms/modules/menu/js/script.js */ /* ---------------------------------------- START OF: /cms_files/components/cms/modules/search/js/script.js */ var search_timer = null; $(function() { $('.cms-search-form').on('submit', function(e) { e.preventDefault(); search_execute(true, this); return false; }); }); function search_execute(direct, el) { if (search_timer !== null) { clearTimeout(search_timer); } if (direct) { var form = $(el); var input = form.find('[name=search-query]'); var query = input.val(); if (query != '') { $.ajax({ url: '/cms_files/components/cms/modules/search/a.php', data: { query: query }, dataType: 'html', success: function(response) { var resultContainer = form.find('.cms-search-results-wrapper').first(); resultContainer.html(response); resultContainer.show(); } }); } } else { search_timer = setTimeout(function() { search_execute(true, el); }, 500); } } function search_hide(el) { var form = $(el).closest('form'); form.find('[name=search-query]').val(''); form.find('.cms-search-results-wrapper').hide(); } /* ---------------------------------------- END OF: /cms_files/components/cms/modules/search/js/script.js */ /* ---------------------------------------- START OF: /cms_files/components/cms/modules/accordion/js/script.js */ $(document).ready(function() { accordion_initialize(); }); function accordion_initialize() { var accordions = $('.module-accordion'); $.each(accordions, function(key, item) { item = $(item); if (item.data('accordion-init') != '1') { var collapses = $(item).find('.collapse'); // Active first item collapses.first().prev('.panel-heading').addClass('active'); collapses.first().prev('.panel-heading').find('a').addClass('active'); $.each(collapses, function(key, item) { item = $(item); item.on('hide.bs.collapse', function () { $(this).prev('.panel-heading').removeClass('active'); $(this).prev('.panel-heading').find('a').removeClass('active'); }); item.on('show.bs.collapse', function () { $(this).prev('.panel-heading').addClass('active'); $(this).prev('.panel-heading').find('a').addClass('active'); }); }); item.data('accordion-init', '1'); } }); } /* ---------------------------------------- END OF: /cms_files/components/cms/modules/accordion/js/script.js */ /* ---------------------------------------- START OF: /cms_files/components/cms/modules/useraccount/js/script.js */ var userAccountAjax = '/cms_files/components/cms/modules/useraccount/a.php'; var userAccountEmailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; var userAccountCheckTimer = null; var userAccountRequest = null; var userAccountLastChecked = ''; var userAccountStrongPassLoaded = false; var userAccountPasswordOk = false; var userAccountPasswordsProcessed = false; var userAccountExists = false; var userAccountCheckInterval = null; var userAccountModule = ''; var userAccountView = ''; var userAccountbannedPasswords = [ // see study here: http://smrt.io/JlNfrH '123456', '12345', '123456789', 'password', 'iloveyou', 'princess', 'rockyou', '1234567', '12345678', 'abc123', 'nicole', 'daniel', 'babygirl', 'monkey', 'jessica', 'lovely', 'michael', 'ashley', '654321', 'qwerty', 'password1', 'welkom', 'qwerty', 'welcome', 'welcome1', 'password2', 'password01', 'password3', 'p@ssw0rd', 'passw0rd', 'password4', 'password123', 'summer09', 'password6', 'password7', 'password9', 'password8', 'welcome2', 'welcome01', 'winter', 'spring', 'summer', 'wachtwoord', 'zomer', 'winter', 'herfst', 'lente', 'wachtwoord1', 'wachtwoord2', 'wachtwoord01', 'wachtwoord3', 'w4chtw00rd', 'wachtw00rd', 'wachtwoord4', 'wachtwoord123', 'wachtwoord6', 'wachtwoord7', 'wachtwoord9', 'wachtwoord8', 'admin', 'administrator' ]; var useraccount_loginAction = ''; $(function() { $('#cms-user-login-button').on('click', function(e) { e.preventDefault(); useraccount_showLoginForm(); }); if (cms.getUrlVar('a') == 'password_reset') { useraccount_loginAction = 'password_reset'; useraccount_showLoginForm(); } }); function useraccount_finishPasswordReset() { var hash = cms.getUrlVar('h'); $('#cms-account-title').text('Nieuw wachtwoord instellen'); if (hash == '') { alert('De herstellink is niet juist of is al gebruikt, kopieer de link naar je browser en probeer het opnieuw.'); $('#cms-account-content').hide(); useraccount_loginAction = ''; } else { $.ajax({ url: userAccountAjax+'?action=validateHash', data: { hash: hash }, success: function(response) { if (response.success === true) { $('#account-email').val(response.email); $('#cms-account-email').val(response.email); } else { alert('De herstellink is niet juist of is al gebruikt, kopieer de link naar je browser en probeer het opnieuw.'); useraccount_loginAction = ''; $('#cms-account-content').hide(); } } }); $('.account-login-form').hide(); $('.account-registration-form').show(); } } function useraccount_resetPassword() { $('#cms-account-forgotpassword').hide(); $('#cms-account-title').text('Wachtwoord vergeten'); var email = $('#cms-account-email').val(); $('#cms-account-loading-message').show(); $('#cms-account-password').hide(); $.ajax({ url: userAccountAjax+'?action=forgotPassword', data: { email: email }, success: function(response) { if (response.success) { $('.account-login-form').hide(); $('.account-passwordreset-sent').show(); } else { useraccount_loginAction = ''; $('#cms-account-content').hide(); } } }); } function useraccount_showToolbar() { var toolbar = $('#cms-useraccount-toolbar-collapse'); toolbar.slideToggle(); } function isValidDate(dateString) { // First check for the pattern if(!/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(dateString)) return false; // Parse the date parts to integers var parts = dateString.split("/"); var day = parseInt(parts[1], 10); var month = parseInt(parts[0], 10); var year = parseInt(parts[2], 10); // Check the ranges of month and year if(year < 1000 || year > 3000 || month == 0 || month > 12) return false; var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; // Adjust for leap years if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) monthLength[1] = 29; // Check the range of the day return day > 0 && day <= monthLength[month - 1]; } function useraccount_register() { var email = $('#cms-account-email').val(); var password = $('#cms-register-account-password').val(); var passwordRepeat = $('#cms-register-password-repeat').val(); if (password != passwordRepeat) { $('#cms-account-password-repeat').addClass('form-error'); return false; } else { $('#cms-account-password-repeat').removeClass('form-error'); } if (useraccount_loginAction == 'password_reset') { $.ajax({ url: userAccountAjax+'?action=resetPassword', data: { hash: cms.getUrlVar('h'), password: password }, method: 'post', dataType: 'json', success: function(response) { // Log the user in $('#cms-account-email').val(email); $('#cms-account-password').val(password); $('.account-registration-form').hide(); $('.account-passwordreset-complete').show(); $('.account-login-form').show(); $('#cms-account-password').show(); $('#cms-account-title').text('Inloggen'); $('#cms-account-button').text('Inloggen'); $('#cms-account-email').prop('disabled', true); $('#cms-account-password').prop('disabled', true); setTimeout(function() { useraccount_login(); }, 2000); } }); return true; } if (!userAccountEmailRegex.test(email)) { alert('Je hebt een ongeldig e-mailadres gebruikt. Druk op de terug knop en vul een correct e-mailadres in.'); return false; } // Load the password checker if (!userAccountPasswordOk) { alert('Je wachtwoord dient minimaal 6 karakters lang te zijn.'); return false; } $.ajax({ url: userAccountAjax+'?action=register', data: { email: email, password: password }, method: 'post', dataType: 'json', success: function(response) { console.log(response); if (response.success) { // Log the user in $('#cms-account-email').val(email); $('#cms-account-password').val(password); $('.account-registration-form').hide(); $('.account-registration-complete').show(); $('.account-login-form').show(); $('#cms-account-password').show(); $('#cms-account-title').text('Inloggen'); $('#cms-account-button').text('Inloggen'); $('#cms-account-email').prop('disabled', true); $('#cms-account-password').prop('disabled', true); setTimeout(function() { useraccount_login(); }, 2000); } else { alert('Er ging iets mis in de registratie, controleer je gegevens of probeer het opnieuw.'); } } }); } function useraccount_login(email, password, refresh) { if (!email) { email = $('#cms-account-email').val(); password = $('#cms-account-password').val(); } $('#cms-account-email').prop('disabled', true); $('#cms-account-password').prop('disabled', true); $.ajax({ url: userAccountAjax+'?action=login', method: 'post', data: { email: email, password: password }, dataType: 'json', success: function(response) { if (response.success) { // Refresh if (refresh) { if (useraccount_loginAction == 'password_reset') { window.location = '/'; } else { window.location = window.location; } } else { $('.account-login-failed').hide(); $('#cms-useraccount-form').unbind('submit'); if (useraccount_loginAction == 'password_reset') { window.location = '/'; } else { window.location = window.location; } //$('#cms-useraccount-form').trigger('submit'); } } else { $('#cms-account-email').prop('disabled', false); $('#cms-account-password').prop('disabled', false); $('.account-login-failed').show(); } } }); } function useraccount_passwordStrength() { var password = $('#cms-register-account-password').val(); if (!userAccountPasswordsProcessed) { // Process var year = new Date().getFullYear(); var adds = [year-1, year, year+1, (year-1).toString().substr(2), (year).toString().substr(2), (year+1).toString().substr(2)]; var addedPasswords = []; $.each(adds, function(key, item) { $.each(userAccountbannedPasswords, function(passKey, password) { addedPasswords.push(password+item); }); }); $.each(addedPasswords, function(key, item) { userAccountbannedPasswords.push(item); }); userAccountPasswordsProcessed = true; } var score = 0; if (password.length >= 6) { // Minimum length score += 25; $('.cms-account-passworderror').hide(); } else { $('.cms-account-passworderror').show(); } var alphaString = 'abcdefghijklmnopqrstuvwxyz'; var numericString = '0123456789'; var alpha = false; var numeric = false; var special = false; var upperCase = false; var lowerCase = false; for (var i = 0; i < password.length; i++) { if (alphaString.indexOf(password[i].toLowerCase()) !== -1) { alpha = true; } if (numericString.indexOf(password[i]) !== -1) { score += 10; } if (alphaString.indexOf(password[i].toLowerCase()) === -1 && numericString.indexOf(password[i]) === -1) { score += 20; } if (alphaString.indexOf(password[i]) !== -1) { lowerCase = true; } if (alphaString.toUpperCase().indexOf(password[i]) !== -1) { upperCase = true; } } if (lowerCase && upperCase) { score += 25; } if (password.length > 9) { score += 25; } if (score > 100) { score = 100; } else if (score < 10) { score = 10; } $('#cms-account-passwordstrength div').width(score+'%'); if (userAccountbannedPasswords.indexOf(password) !== -1) { score = 10; $('.cms-account-passworderror').text('Wachtwoord niet toegestaan'); $('.cms-account-passworderror').show(); } else { $('.cms-account-passworderror').text('Min. 6 karakters'); } if (score < 30) { $('#cms-account-passwordstrength div').removeClass('bad').removeClass('good').removeClass('average').addClass('bad'); } else if (score >= 30 && score < 80) { $('#cms-account-passwordstrength div').removeClass('bad').removeClass('good').removeClass('average').addClass('average'); if (password.length >= 6) { userAccountPasswordOk = true; } } else { $('#cms-account-passwordstrength div').removeClass('bad').removeClass('good').removeClass('average').addClass('good'); if (password.length >= 6) { userAccountPasswordOk = true; } } } function useraccount_close() { $('body').css('overflow', 'visible'); $('#cms-account-content').remove(); } function useraccount_saveExtendedFields() { var extended = $('#cms-account-content').find('input, select, textarea'); var data = {}; $.each(extended, function(key, item) { item = $(item); if (item.attr('name') != '') { var value = item.val(); switch(item.attr('type')) { case 'radio': if (!(item.attr('name') in data)) { // Get the checked one var checked = $('#cms-account-content').find('input[name='+item.attr('name')+']:checked'); if (checked.length > 0) { data[item.attr('name')] = checked.attr('value'); } } break; default: data[item.attr('name')] = item.val(); break; } } }); $('#cms-account-settings-saved').show(); setTimeout(function() { $('#cms-account-settings-saved').fadeOut(); }, 3000); $.ajax({ url: userAccountAjax+'?action=saveSettings', dataType: 'json', data: data, method: 'post', success: function(response) { useraccount_loadContent(); } }); } function useraccount_updateAccount() { var email = $('#cms-useraccount-email').val(); var password = $('#cms-register-account-password').val(); $.ajax({ url: userAccountAjax+'?action=updateAccount', dataType: 'json', data: { email: email, password: password }, method: 'post', success: function(response) { if (response.success === false) { $('#cms-account-update-error').text(response.message); $('#cms-account-update-error').show(); $('#cms-account-update-success').hide(); } else { $('#cms-account-update-error').hide(); $('#cms-account-update-success').show(); if (response.emailChanged) { // Needs to login again alert('Je e-mailadres is bijgewerkt en je bent automatisch uitgelogd. Log opnieuw in met je nieuwe e-mailadres.'); window.location = window.location; } } } }); } function useraccount_loadContent(module, view) { if (module) { userAccountModule = module; } if (view) { userAccountView = view; } $('#cms-useraccount-toolbar-collapse').fadeOut(); if ($('#cms-account-content').length === 0) { // Load this first $.ajax({ url: userAccountAjax+'?action=getAccountSettings', dataType: 'json', success: function(response) { var container = $('.site-scope'); container = $('body'); if (container.length == 0) { container = $('body'); } container.append(response.html); useraccount_loadContent(module, view); } }); } else { // Load the user account content $('#cms-account-content').fadeIn(); $.ajax({ url: '/cms_files/components/cms/modules/'+userAccountModule+'/a.php?action=useraccount', data: { view: userAccountView }, method: 'post', dataType: 'html', success: function(response) { $('#cms-account-nav li').removeClass('active'); $('#cms-account-nav li[data-module='+userAccountModule+'][data-view='+userAccountView+']').addClass('active'); $('#cms-account-tab-content').html(response); } }); } } function useraccount_showLoginForm(modal) { $('#cms-account-content').remove(); if (userAccountCheckInterval !== null) { clearInterval(userAccountCheckInterval); } $.ajax({ url: userAccountAjax+'?action=getLoginForm', dataType: 'json', success: function(response) { var container = $('.site-scope'); container = $('body'); if (container.length == 0) { container = $('body'); } container.append(response.html); $('[name=cms-account-action]').on('click', function(e) { if ($(this).val() == 'register') { $('#cms-account-button').text('Registreren'); $('#cms-account-password').hide(); $('#cms-account-title').text('Registreren'); } else { $('#cms-account-button').text('Inloggen'); $('#cms-account-password').show(); $('#cms-account-title').text('Inloggen'); } }); $('#cms-account-backbutton').on('click', function(e) { e.preventDefault(); $('.account-registration-form').hide(); $('.account-login-form').show(); }); $('#cms-account-button').on('click', function() { var email = $('#cms-account-email').val(); if (!userAccountEmailRegex.test(email)) { $('#cms-account-email').addClass('form-error'); } else { if (userAccountExists) { useraccount_login(); } else { $('#cms-account-email').removeClass('form-error'); $('#account-email').val(email); $('.account-registration-form').show(); $('.account-login-form').hide(); } } }); $('#cms-useraccount-form').on('submit', function(e) { e.preventDefault(); if (userAccountExists) { useraccount_login(); } else { useraccount_checkAccount(); } return false; }); userAccountCheckInterval = setInterval(function() { useraccount_checkAccount(); }, 500); window.scrollTo(0, 0); $('#cms-account-content').fadeIn(); if (modal) { $('body').css('overflow', 'hidden'); $('#cms-account-haze').css({ width: $(window).width(), height: $(window).height() }); $('#cms-account-haze').fadeIn(); $('#cms-account-haze').on('click', function() { useraccount_close(); }); } if (useraccount_loginAction == 'password_reset') { useraccount_finishPasswordReset(); } } }); return false; } function useraccount_checkAccount() { var email = $('#cms-account-email').val(); if (userAccountEmailRegex.test(email)) { if (userAccountLastChecked == email) { return; } userAccountLastChecked = email; if (userAccountCheckTimer !== null) { clearTimeout(userAccountCheckTimer); } if (userAccountRequest !== null) { userAccountRequest.abort(); userAccountRequest = null; } userAccountCheckTimer = setTimeout(function() { $('#cms-account-loading-message').show(); userAccountRequest = $.ajax({ url: userAccountAjax+'?action=checkEmail', dataType: 'json', method: 'post', data: { email: email }, success: function(response) { $('#cms-account-loading-message').hide(); if (response.exists === true) { $('#cms-account-button').html(' Inloggen'); $('#cms-account-password').show(); $('#cms-account-forgotpassword').show(); $('#cms-account-title').text('Inloggen'); $('#cms-account-password')[0].focus(); userAccountExists = true; } else { $('#cms-account-button').html(' Registreren'); $('#cms-account-password').hide(); $('#cms-account-forgotpassword').hide(); $('#cms-account-title').text('Registreren'); userAccountExists = false; } $('#cms-account-button').show(); } }); }, 500); } else { $('#cms-account-button').hide(); $('#cms-account-forgotpassword').hide(); $('#cms-account-password').hide(); userAccountLastChecked = ''; } } /* ---------------------------------------- END OF: /cms_files/components/cms/modules/useraccount/js/script.js */