diff --git a/client/scripts/custom.js b/client/scripts/custom.js deleted file mode 100644 index c7e2848..0000000 --- a/client/scripts/custom.js +++ /dev/null @@ -1,1382 +0,0 @@ -$(window).on('load',function(){ - $('.menu').css('display','block'); - $('#preloader').addClass('preloader-hide'); -}) - -$(document).ready(function(){ - 'use strict' - - var isPWA = true; //Enables PWA.js which loads manifest & service worker. - var isAJAX = true; //Enables or disable AJAX page transitions and loading. - var isDevelopment = false; // Enables development mode. Clean cache & Stops BG & Highlights from changing defaults. - - function init_template(){ - - //ADD YOUR CUSTOM JAVASCRIPT CODES HERE! - //Do not put inside HTML files. - //The init_template() function will be triggered when pages open. - - - //Generating Dynamic Styles to decrease CSS size and execute faster loading times. - var colorsArray = [ - //colors must be in HEX format. - // use the color scheme as bellow this will automatically generate CSS for - // bg-colorName-dark bg-colorName-light color-colorName-dark color-colorName-light - //["colorName","light_hex","dark_hex","darker_hex_for_gradient"], - ["none","","",""], - ["plum","#6772A4","#6772A4","#3D3949"], - ["violet","#673c58","#673c58","#492D3D"], - ["magenta3","#413a65","#413a65","#2b2741"], - ["red3","#c62f50","#6F1025","#6F1025"], - ["green3","#6eb148","#2d7335","#2d7335"], - ["pumpkin","#E96A57","#C15140","#C15140"], - ["dark3","#535468","#535468","#343341"], - ["red1","#D8334A","#BF263C","#9d0f23"], - ["red2","#ED5565","#DA4453","#a71222"], - ["orange","#FC6E51","#E9573F","#ce3319"], - ["yellow1","#FFCE54","#F6BB42","#e6a00f"], - ["yellow2","#E8CE4D","#E0C341","#dbb50c"], - ["yellow3","#CCA64F","#996A22","#996A22"], - ["green1","#A0D468","#8CC152","#5ba30b"], - ["green2","#2ECC71","#2ABA66","#0da24b"], - ["mint","#48CFAD","#37BC9B","#0fa781"], - ["teal","#A0CECB","#7DB1B1","#158383"], - ["aqua","#4FC1E9","#3BAFDA","#0a8ab9"], - ["sky","#188FB6","#0F5F79","#0F5F79"], - ["blue1","#4FC1E9","#3BAFDA","#0b769d"], - ["blue2","#5D9CEC","#4A89DC","#1a64c6"], - ["magenta1","#AC92EC","#967ADC","#704dc9"], - ["magenta2","#8067B7","#6A50A7","#4e3190"], - ["pink1","#EC87C0","#D770AD","#c73c8e"], - ["pink2","#fa6a8e","#fb3365","#d30e3f"], - ["brown1","#BAA286","#AA8E69","#896b43"], - ["brown2","#8E8271","#7B7163","#584934"], - ["gray1","#F5F7FA","#E6E9ED","#c2c5c9"], - ["gray2","#CCD1D9","#AAB2BD","#88919d"], - ["dark1","#656D78","#434A54","#242b34"], - ["dark2","#3C3B3D","#323133","#1c191f"] - ]; - var socialColorArray = [ - ["facebook","#3b5998"], - ["linkedin","#0077B5"], - ["twitter","#4099ff"], - ["google","#d34836"], - ["whatsapp","#34AF23"], - ["pinterest","#C92228"], - ["sms","#27ae60"], - ["mail","#3498db"], - ["dribbble","#EA4C89"], - ["phone","#27ae60"], - ["skype","#12A5F4"], - ["instagram","#e1306c"] - ]; - - - //Back Button Scroll Stop - if ('scrollRestoration' in history) {history.scrollRestoration = 'manual';} - - //Disable Page Jump on Empty Links. - $('a').on('click', function(){var attrs = $(this).attr('href'); if(attrs === '#'){return false;}}); - - //Adding Background for Gradient - if(!$('.menu-hider').length){$('#page').append('
No internet connection detected
'); - $('body').append('You are back online
'); - } - - //Offline Function Show - function isOffline(){ - $('.offline-message').addClass('offline-message-active'); - $('.online-message').removeClass('online-message-active'); - setTimeout(function(){$('.offline-message').removeClass('offline-message-active');},2000); - } - - //Online Function Show - function isOnline(){ - $('.online-message').addClass('online-message-active'); - $('.offline-message').removeClass('offline-message-active'); - setTimeout(function(){$('.online-message').removeClass('online-message-active');},2000); - } - - $('.simulate-offline').on('click',function(){isOffline();}) - $('.simulate-online').on('click',function(){isOnline();}) - - //Check if Online / Offline - function updateOnlineStatus(event) { - var condition = navigator.onLine ? "online" : "offline"; - isOnline(); - console.log( 'Connection: Online'); - } - function updateOfflineStatus(event) { - isOffline(); - console.log( 'Connection: Offline'); - } - window.addEventListener('online', updateOnlineStatus); - window.addEventListener('offline', updateOfflineStatus); - - //QR Generator - var generateQR = $('.generate-qr-result, .generate-qr-auto'); - function activate_qr_generator(){ - //QR Code Generator - var qr_auto_link = window.location.href; - var qr_api_address = 'https://api.qrserver.com/v1/create-qr-code/?size=200x200&data='; - - $('.generate-qr-auto').attr('src', qr_api_address+qr_auto_link) - $('.generate-qr-button').on('click',function(){ - if($(this).parent().find('.fa').hasClass('fa-exclamation-triangle')){ - console.log('Invalid URL'); - } else { - var get_qr_url = $('.generate-qr-input').val(); - if(!get_qr_url == ''){ - $('.generate-qr-result').empty(); - setTimeout(function(){ - $('.generate-qr-result').append(''+get_qr_url+'
') - },30); - } - } - }); - } - if(generateQR.length){activate_qr_generator();} - - //Vibrate Buttons - var vibrateButton = $('[data-vibrate]'); - function activate_vibration(){ - $('[data-vibrate]').on('click',function(){var vibrateTime = $(this).data('vibrate'); window.navigator.vibrate(vibrateTime);}); - $('.start-vibrating').on('click',function(){var vibrateTimeInput = $('.vibrate-demo').val(); window.navigator.vibrate(vibrateTimeInput);}) - $('.stop-vibrating').on('click',function(){window.navigator.vibrate(0); $('.vibrate-demo').val(''); }); - } - if(vibrateButton.length){ - activate_vibration(); - } - - //Sharing - var share_link = window.location.href; - var share_title = document.title; - $('.shareToFacebook').prop("href", "https://www.facebook.com/sharer/sharer.php?u="+share_link) - $('.shareToLinkedIn').prop("href", "https://www.linkedin.com/shareArticle?mini=true&url="+share_link+"&title="+share_title+"&summary=&source=") - $('.shareToTwitter').prop("href", "https://twitter.com/home?status="+share_link) - $('.shareToPinterest').prop("href", "https://pinterest.com/pin/create/button/?url=" + share_link) - $('.shareToWhatsApp').prop("href", "whatsapp://send?text=" + share_link) - $('.shareToMail').prop("href", "mailto:?body=" + share_link) - - - //Preload Image - var preloadImages = $('.preload-img'); - $(function() {preloadImages.lazyload({threshold : 500});}); - - //LightBox - $('[data-lightbox]').addClass('default-link'); - lightbox.option({alwaysShowNavOnTouchDevices:true, 'resizeDuration': 200, 'wrapAround': false}) - $('#lightbox').hammer().on("swipe", function (event) { - if (event.gesture.direction === 4) { - $('#lightbox a.lb-prev').trigger('click'); - } else if (event.gesture.direction === 2) { - $('#lightbox a.lb-next').trigger('click'); - } - }); - - //Filterable - if($('.gallery-filter').length > 0){$('.gallery-filter').filterizr(); $('.gallery-filter-active').addClass('color-highlight');} - $('.gallery-filter-controls li').on('click',function(){ - $('.gallery-filter-controls li').removeClass('gallery-filter-active color-highlight'); - $(this).addClass('gallery-filter-active color-highlight'); - }); - - //Gallery Views // Added in 2.0 - var galleryViews = $('.gallery-views'); - var galleryViewControls = $('.gallery-view-controls a'); - var galleryView1 = $('.gallery-view-1-activate'); - var galleryView2 = $('.gallery-view-2-activate'); - var galleryView3 = $('.gallery-view-3-activate'); - - galleryView1.on('click',function(){ - galleryViewControls.removeClass('color-highlight'); - $(this).addClass('color-highlight'); - galleryViews.removeClass().addClass('gallery-views gallery-view-1'); - }); - galleryView2.on('click',function(){ - galleryViewControls.removeClass('color-highlight'); - $(this).addClass('color-highlight'); - galleryViews.removeClass().addClass('gallery-views gallery-view-2'); - }); - galleryView3.on('click',function(){ - galleryViewControls.removeClass('color-highlight'); - $(this).addClass('color-highlight'); - galleryViews.removeClass().addClass('gallery-views gallery-view-3'); - }); - - - //Search - var search = $('[data-search]'); - function activate_search(){ - search.on('keyup', function() { - var searchVal = $(this).val(); - var filterItems = $(this).parent().parent().find('[data-filter-item]'); - if ( searchVal != '' ) { - $('.search-results').removeClass('disabled-search-list'); - $('[data-filter-item]').addClass('disabled-search'); - $('[data-filter-item][data-filter-name*="' + searchVal.toLowerCase() + '"]').removeClass('disabled-search'); - } else { - $('.search-results').addClass('disabled-search-list'); - $('[data-filter-item]').removeClass('disabled-search'); - } - }); - } - if(search.length){activate_search();} - - //Contact Form - var formSubmitted = "false"; - jQuery(document).ready(function(e) { - function t(t, n) { - formSubmitted = "true"; - var r = e("#" + t).serialize(); - e.post(e("#" + t).attr("action"), r, function(n) { - e("#" + t).addClass('disabled'); - $('.contact-form').addClass('disabled'); - e(".formSuccessMessageWrap").fadeIn(500) - }) - } - function n(n, r) { - e(".formValidationError").hide(); - e(".fieldHasError").removeClass("fieldHasError"); - e("#" + n + " .requiredField").each(function(i) { - if (e(this).val() == "" || e(this).val() == e(this).attr("data-dummy")) { - e(this).val(e(this).attr("data-dummy")); - e(this).focus(); - e(this).addClass("fieldHasError"); - e("#" + e(this).attr("id") + "Error").fadeIn(300); - return false - } - if (e(this).hasClass("requiredEmailField")) { - var s = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; - var o = "#" + e(this).attr("id"); - if (!s.test(e(o).val())) { - e(o).focus(); - e(o).addClass("fieldHasError"); - e(o + "Error2").fadeIn(300); - return false - } - } - if (formSubmitted == "false" && i == e("#" + n + " .requiredField").length - 1) { - t(n, r) - } - }) - } - e(".formSuccessMessageWrap").hide(0); - e(".formValidationError").fadeOut(0); - e('input[type="text"], input[type="password"], textarea').focus(function() { - if (e(this).val() == e(this).attr("data-dummy")) { - e(this).val("") - } - }); - e("input, textarea").blur(function() { - if (e(this).val() == "") { - e(this).val(e(this).attr("data-dummy")) - } - }); - e(".contactSubmitButton").on('click',function() { - n(e(this).attr("data-formId")); - return false - }) - }); - - - //Charts - if($('.chart').length > 0){ - var loadJS = function(url, implementationCode, location){ - var scriptTag = document.createElement('script'); - scriptTag.src = url; - scriptTag.onload = implementationCode; - scriptTag.onreadystatechange = implementationCode; - location.appendChild(scriptTag); - }; - var call_charts_to_page = function(){ - - var walletChart = $('#wallet-chart'); - var pieChart = $('#pie-chart'); - var doughnutChart = $('#doughnut-chart'); - var polarChart = $('#polar-chart'); - var verticalChart = $('#vertical-chart'); - var horizontalChart = $('#horizontal-chart'); - var lineChart = $('#line-chart'); - - if(walletChart.length){ - var walletDemoChart = new Chart(walletChart, { - type: 'pie', - data: { - labels: ["Expenses", "Income"], - datasets: [{ - backgroundColor: ["#ED5565", "#A0D468"], - borderColor:"rgba(255,255,255,0.5)", - data: [7000,3000] - }] - }, - options: { - responsive: true, maintainAspectRatio:false, - legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, - tooltips:{enabled:true}, animation:{duration:1500} - } - }); - } - - if(pieChart.length){ - var pieDemoChart = new Chart(pieChart, { - type: 'pie', - data: { - labels: ["Facebook", "Twitter", "WhatsApp"], - datasets: [{ - backgroundColor: ["#4A89DC", "#4FC1E9", "#A0D468"], - borderColor:"rgba(255,255,255,0.5)", - data: [7000,3000,2000] - }] - }, - options: { - responsive: true, maintainAspectRatio:false, - legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, - tooltips:{enabled:true}, animation:{duration:1500} - } - }); - } - - if(doughnutChart.length){ - var doughnutDemoChart = new Chart(doughnutChart, { - type: 'doughnut', - data: { - labels: ["Apple", "Samsung", "Google"], - datasets: [{ - backgroundColor: ["#CCD1D9", "#5D9CEC","#FC6E51"], - borderColor:"rgba(255,255,255,0.5)", - data: [5500,4000,3000] - }] - }, - options: { - responsive: true, maintainAspectRatio:false, - legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, - tooltips:{enabled:true}, animation:{duration:1500}, layout:{ padding: {bottom: 30}} - } - }); - } - - if(polarChart.length){ - var polarDemoChart = new Chart(polarChart, { - type: 'polarArea', - data: { - labels: ["Windows", "Mac", "Linux"], - datasets: [{ - backgroundColor: ["#CCD1D9", "#5D9CEC","#FC6E51"], - borderColor:"rgba(255,255,255,0.5)", - data: [7000,10000,5000] - }] - }, - options: { - responsive: true, maintainAspectRatio:false, - legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, - tooltips:{enabled:true}, animation:{duration:1500}, layout:{ padding: {bottom: 30}} - } - }); - } - - if (verticalChart.length){ - var verticalDemoChart = new Chart(verticalChart, { - type: 'bar', - data: { - labels: ["2010", "2015", "2020", "2025"], - datasets: [ - { - label: "iOS", - backgroundColor: "#A0D468", - data: [900,1000,1200,1400] - }, { - label: "Android", - backgroundColor: "#4A89DC", - data: [890,950,1100,1300] - } - ] - }, - options: { - responsive: true, maintainAspectRatio:false, - legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, - title: {display: false} - } - }); - } - - if(horizontalChart.length){ - var horizontalDemoChart = new Chart(horizontalChart, { - type: 'horizontalBar', - data: { - labels: ["2010", "2013", "2016", "2020"], - datasets: [ - { - label: "Mobile", - backgroundColor: "#BF263C", - data: [330,400,580,590] - }, { - label: "Responsive", - backgroundColor: "#EC87C0", - data: [390,450,550,570] - } - ] - }, - options: { - legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, - title: {display: false} - } - }); - } - - if(lineChart.length){ - var lineDemoChart = new Chart(lineChart, { - type: 'line', - data: { - labels: [2000,2005,2010,2015,2010], - datasets: [{ - data: [500,400,300,200,300], - label: "Desktop Web", - borderColor: "#D8334A" - }, { - data: [0,100,300,400,500], - label: "Mobile Web", - borderColor: "#4A89DC" - } - ] - }, - options: { - responsive: true, maintainAspectRatio:false, - legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, - title: {display: false} - } - }); - } - } - loadJS('scripts/charts.js', call_charts_to_page, document.body); - } - - - //Local Error Message - if (window.location.protocol === "file:"){$('a').on('mouseover',function(){console.log("You are seeing these errors because your file is on your local computer. For real life simulations please use a Live Server or a Local Server such as AMPPS or WAMPP or simulate a Live Preview using a Code Editor like http://brackets.io (it's 100% free) - PWA functions and AJAX Page Transitions will only work in these scenarios.");});} - - - //Style Generator - var generatedStyles = $('.generated-styles'); - var generatedHighlight = $('.generated-highlight'); - - //HEX to RGBA Converter - function HEXtoRGBA(hex){ - var c; - if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)){ - c= hex.substring(1).split(''); - if(c.length== 3){c= [c[0], c[0], c[1], c[1], c[2], c[2]];} - c= '0x'+c.join(''); - return 'rgba('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+',0.3)'; - } - } - - function highlight_colors(){ - var bodyColor = readCookie('sticky-color-scheme') - if(bodyColor == undefined){var bodyColor = $('body').data('highlight');} - - var bodyBackground = readCookie('sticky-bg-scheme') - if(bodyBackground == undefined){var bodyBackground = $('body').data('background');} - - var data = colorsArray.map(colorsArray => colorsArray[0]); - if (data.indexOf(bodyColor) > -1) { - var highlightLocated = data.indexOf(bodyColor) - var backgroundLocated = data.indexOf(bodyBackground) - var highlightColorCode = colorsArray[highlightLocated][2] - var backgroundColorCode = colorsArray[backgroundLocated][3] + ', ' + colorsArray[backgroundLocated][1] - var highlightColor = '.color-highlight{color:'+highlightColorCode+'!important}' - var highlightBg = '.bg-highlight, .page-item.active a{background-color:'+highlightColorCode+'!important}' - var highlightNav = '.footer-bar-1 .active-nav *, .footer-bar-3 .active-nav i{color:'+highlightColorCode+'!important} .footer-bar-2 strong, .footer-bar-4 strong, .footer-bar-5 strong{background-color:'+highlightColorCode+'!important; color:#FFF;}' - var highlightBorder = '.border-highlight{border-color:'+highlightColorCode+'!important}' - var highlightHeaderTabs = '.header-tab-active{border-color:'+highlightColorCode+'!important}' - var bodyBG = '#page{background: linear-gradient(0deg, '+backgroundColorCode+')!important;} .bg-page{background: linear-gradient(0deg, '+backgroundColorCode+')!important }' - if(!generatedHighlight.length){ - $('body').append('') - $('body').append('') - $('.generated-highlight').append(highlightColor, highlightBg, highlightNav, highlightBorder, highlightHeaderTabs); - $('.generated-background').append(bodyBG); - } - } - } - highlight_colors(); - - //Change Highlight - $('[data-change-highlight]').on('click',function(changeColor){ - var highlightNew = $(this).data('change-highlight'); - $('body').attr('data-highlight',highlightNew); - $('.generated-highlight').remove(); - createCookie('sticky-color-scheme',highlightNew,1) - var data = colorsArray.map(colorsArray => colorsArray[0]); - if (data.indexOf(highlightNew) > -1) { - var highlightLocated = data.indexOf(highlightNew) - if($(this).data('color-light') !== undefined){ - var highlightColorCode = colorsArray[highlightLocated][1] - } else { - var highlightColorCode = colorsArray[highlightLocated][2] - } - var highlightColor = '.color-highlight{color:'+highlightColorCode+'!important}' - var highlightBg = '.bg-highlight{background-color:'+highlightColorCode+'!important}' - var highlightNav = '.active-nav *{color:'+highlightColorCode+'!important} .active-nav2 strong{background-color:'+highlightColorCode+'!important} .active-nav3 strong{background-color:'+highlightColorCode+'!important} .active-nav4 strong{border-color:'+highlightColorCode+'!important}' - var highlightBorder = '.border-highlight{border-color:'+highlightColorCode+'!important}' - $('body').append('') - $('.generated-highlight').append(highlightColor, highlightBg, highlightNav, highlightBorder); - } - }); - - //Change Background - $('[data-change-background]').on('click',function(changeColor){ - var backgroundNew = $(this).data('change-background'); - createCookie('sticky-bg-scheme',backgroundNew,1) - $('.generated-background').remove(); - var data = colorsArray.map(colorsArray => colorsArray[0]); - var backgroundLocated = data.indexOf(backgroundNew) - var backgroundColorCode = colorsArray[backgroundLocated][3] + ', ' + colorsArray[backgroundLocated][1] - var bodyBG = '#page{background: linear-gradient(0deg, '+backgroundColorCode+')!important;} .bg-page{background: linear-gradient(0deg, '+backgroundColorCode+')!important}' - $('body').append('') - $('.generated-background').append(bodyBG); - }); - - if (!generatedStyles.length){ - $('body').append(''); - $('.generated-styles').append('/*Generated using JS for lower CSS file Size, Easier Editing & Faster Loading*/'); - colorsArray.forEach(function (colorValue) {$('.generated-styles').append('.bg-'+colorValue[0]+'-light{ background-color: '+colorValue[1]+'!important; color:#FFFFFF!important;} .bg-'+colorValue[0]+'-light i, .bg-'+colorValue[0]+'-dark i{color:#FFFFFF;} .bg-'+colorValue[0]+'-dark{ background-color: '+colorValue[2]+'!important; color:#FFFFFF!important;} .border-'+colorValue[0]+'-light{ border-color:'+colorValue[1]+'!important;} .border-'+colorValue[0]+'-dark{ border-color:'+colorValue[2]+'!important;} .color-'+colorValue[0]+'-light{ color: '+colorValue[1]+'!important;} .color-'+colorValue[0]+'-dark{ color: '+colorValue[2]+'!important;}');}); - colorsArray.forEach(function (colorFadeValue) {$('.generated-styles').append('.bg-fade-'+colorFadeValue[0]+'-light{ background-color: '+ HEXtoRGBA(colorFadeValue[1]) + '!important; color:#FFFFFF;} .bg-fade-'+colorFadeValue[0]+'-light i, .bg-'+colorFadeValue[0]+'-dark i{color:#FFFFFF;} .bg-fade-'+colorFadeValue[0]+'-dark{ background-color: '+HEXtoRGBA(colorFadeValue[2])+'!important; color:#FFFFFF;} .border-fade-'+colorFadeValue[0]+'-light{ border-color:'+HEXtoRGBA(colorFadeValue[1])+'!important;} .border-fade-'+colorFadeValue[0]+'-dark{ border-color:'+HEXtoRGBA(colorFadeValue[2])+'!important;} .color-fade-'+colorFadeValue[0]+'-light{ color: '+HEXtoRGBA(colorFadeValue[1])+'!important;} .color-fade-'+colorFadeValue[0]+'-dark{ color: '+HEXtoRGBA(colorFadeValue[2])+'!important;}');}); - colorsArray.forEach(function (gradientValue) {$('.generated-styles').append('.bg-gradient-'+gradientValue[0]+'{background-image: linear-gradient(to bottom, '+gradientValue[1]+' 0, '+gradientValue[2]+' 100%)}')}); - socialColorArray.forEach(function (socialColorValue) {$('.generated-styles').append('.bg-'+socialColorValue[0]+'{background-color:'+socialColorValue[1]+'!important; color:#FFFFFF;} .color-'+socialColorValue[0]+'{color:'+socialColorValue[1]+'!important;}')}); - colorsArray.forEach(function (gradientBodyValue) {$('.generated-styles').append('.body-'+gradientBodyValue[0]+'{background-image: linear-gradient(to bottom, '+gradientBodyValue[1]+' 0, '+gradientBodyValue[3]+' 100%)}')}); - } - - } - //Activating all the plugins - setTimeout(init_template, 0); - - //Activate AJAX Transitions - if(isAJAX === true){ - $(function(){ - 'use strict'; - var options = { - prefetch: true, - prefetchOn: 'mouseover', - cacheLength: 100, - scroll: true, - blacklist: '.default-link', - forms: 'contactForm', - onStart: { - duration:150, // Duration of our animation - render: function ($container) { - $container.addClass('is-exiting');// Add your CSS animation reversing class - $('.menu, .menu-hider').removeClass('menu-active'); - $('#preloader').removeClass('preloader-hide'); - return false; - } - }, - onReady: { - duration: 10, - render: function ($container, $newContent) { - $container.removeClass('is-exiting');// Remove your CSS animation reversing class - $container.html($newContent);// Inject the new content - setTimeout(init_template, 0)//Timeout required to properly initiate all JS Functions. - $('#preloader').removeClass('preloader-hide'); - } - }, - onAfter: function($container, $newContent) { - setTimeout(function(){ - $('.menu').css('display','block'); - $('#preloader').addClass('preloader-hide'); - },150); - } - }; - var smoothState = $('#page').smoothState(options).data('smoothState'); - smoothState.clear(); - }); - } - - //Activate Development mode. Keeps caches clear. - if(isDevelopment === true){ - if(!$('.reloader').length){$('body').append('Developer Mode - Tap to Reload');} - $('.reloader').on('click',function(){window.location.reload(true);}) - caches.delete('workbox-runtime').then(function(){}); - localStorage.clear(); - sessionStorage.clear() - caches.keys().then(cacheNames => { - cacheNames.forEach(cacheName => { - caches.delete(cacheName); - }); - }); - } - - //Activate the PWA - if(isPWA === true){ - var loadJS = function(url, implementationCode, location){ - var scriptTag = document.createElement('script'); - scriptTag.src = url; - scriptTag.onload = implementationCode; - scriptTag.onreadystatechange = implementationCode; - location.appendChild(scriptTag); - }; - function loadPWA(){} - loadJS('scripts/pwa.js', loadPWA, document.body); - } -}); \ No newline at end of file diff --git a/client/scripts/custom.js.php b/client/scripts/custom.js.php new file mode 100644 index 0000000..6adc5d4 --- /dev/null +++ b/client/scripts/custom.js.php @@ -0,0 +1,1397 @@ + + +var loaderCount = 2; +var showLoader = function() { + if (loaderCount < 1) { + $('#preloader').removeClass('preloader-hide'); + loaderCount = 0; + } + loaderCount ++; +} +var hideLoader = function() { + loaderCount --; + if (loaderCount < 1) { + $('#preloader').addClass('preloader-hide'); + loaderCount = 0; + } +} + +$(window).on('load',function(){ + $('.menu').css('display','block'); + hideLoader(); +}) + +$(document).ready(function(){ + 'use strict' + + var isAJAX = true; //Enables or disable AJAX page transitions and loading. + var isDevelopment = true; // Enables development mode. Clean cache & Stops BG & Highlights from changing defaults. + + function init_template(){ + + //ADD YOUR CUSTOM JAVASCRIPT CODES HERE! + //Do not put inside HTML files. + //The init_template() function will be triggered when pages open. + + + //Generating Dynamic Styles to decrease CSS size and execute faster loading times. + var colorsArray = [ + //colors must be in HEX format. + // use the color scheme as bellow this will automatically generate CSS for + // bg-colorName-dark bg-colorName-light color-colorName-dark color-colorName-light + //["colorName","light_hex","dark_hex","darker_hex_for_gradient"], + ["none","","",""], + ["plum","#6772A4","#6772A4","#3D3949"], + ["violet","#673c58","#673c58","#492D3D"], + ["magenta3","#413a65","#413a65","#2b2741"], + ["red3","#c62f50","#6F1025","#6F1025"], + ["green3","#6eb148","#2d7335","#2d7335"], + ["pumpkin","#E96A57","#C15140","#C15140"], + ["dark3","#535468","#535468","#343341"], + ["red1","#D8334A","#BF263C","#9d0f23"], + ["red2","#ED5565","#DA4453","#a71222"], + ["orange","#FC6E51","#E9573F","#ce3319"], + ["yellow1","#FFCE54","#F6BB42","#e6a00f"], + ["yellow2","#E8CE4D","#E0C341","#dbb50c"], + ["yellow3","#CCA64F","#996A22","#996A22"], + ["green1","#A0D468","#8CC152","#5ba30b"], + ["green2","#2ECC71","#2ABA66","#0da24b"], + ["mint","#48CFAD","#37BC9B","#0fa781"], + ["teal","#A0CECB","#7DB1B1","#158383"], + ["aqua","#4FC1E9","#3BAFDA","#0a8ab9"], + ["sky","#188FB6","#0F5F79","#0F5F79"], + ["blue1","#4FC1E9","#3BAFDA","#0b769d"], + ["blue2","#5D9CEC","#4A89DC","#1a64c6"], + ["magenta1","#AC92EC","#967ADC","#704dc9"], + ["magenta2","#8067B7","#6A50A7","#4e3190"], + ["pink1","#EC87C0","#D770AD","#c73c8e"], + ["pink2","#fa6a8e","#fb3365","#d30e3f"], + ["brown1","#BAA286","#AA8E69","#896b43"], + ["brown2","#8E8271","#7B7163","#584934"], + ["gray1","#F5F7FA","#E6E9ED","#c2c5c9"], + ["gray2","#CCD1D9","#AAB2BD","#88919d"], + ["dark1","#656D78","#434A54","#242b34"], + ["dark2","#3C3B3D","#323133","#1c191f"] + ]; + var socialColorArray = [ + ["facebook","#3b5998"], + ["linkedin","#0077B5"], + ["twitter","#4099ff"], + ["google","#d34836"], + ["whatsapp","#34AF23"], + ["pinterest","#C92228"], + ["sms","#27ae60"], + ["mail","#3498db"], + ["dribbble","#EA4C89"], + ["phone","#27ae60"], + ["skype","#12A5F4"], + ["instagram","#e1306c"] + ]; + + + //Back Button Scroll Stop + //if ('scrollRestoration' in history) {history.scrollRestoration = 'manual';} + + //Disable Page Jump on Empty Links. + $('a').on('click', function(){var attrs = $(this).attr('href'); if(attrs === '#'){return false;}}); + + //Adding Background for Gradient + if(!$('.menu-hider').length){$('#page').append('' + strings['inetMsgOffline'] + '
'); + $('body').append('' + strings['inetMsgOnline'] + '
'); + } + + //Offline Function Show + function isOffline(){ + $('.offline-message').addClass('offline-message-active'); + $('.online-message').removeClass('online-message-active'); + setTimeout(function(){$('.offline-message').removeClass('offline-message-active');},2000); + } + + //Online Function Show + function isOnline(){ + $('.online-message').addClass('online-message-active'); + $('.offline-message').removeClass('offline-message-active'); + setTimeout(function(){$('.online-message').removeClass('online-message-active');},2000); + } + + $('.simulate-offline').on('click',function(){isOffline();}) + $('.simulate-online').on('click',function(){isOnline();}) + + //Check if Online / Offline + function updateOnlineStatus(event) { + var condition = navigator.onLine ? "online" : "offline"; + isOnline(); + console.log( 'Connection: Online'); + } + function updateOfflineStatus(event) { + isOffline(); + console.log( 'Connection: Offline'); + } + window.addEventListener('online', updateOnlineStatus); + window.addEventListener('offline', updateOfflineStatus); + + //QR Generator + var generateQR = $('.generate-qr-result, .generate-qr-auto'); + function activate_qr_generator(){ + //QR Code Generator + var qr_auto_link = window.location.href; + var qr_api_address = 'https://api.qrserver.com/v1/create-qr-code/?size=200x200&data='; + + $('.generate-qr-auto').attr('src', qr_api_address+qr_auto_link) + $('.generate-qr-button').on('click',function(){ + if($(this).parent().find('.fa').hasClass('fa-exclamation-triangle')){ + console.log('Invalid URL'); + } else { + var get_qr_url = $('.generate-qr-input').val(); + if(!get_qr_url == ''){ + $('.generate-qr-result').empty(); + setTimeout(function(){ + $('.generate-qr-result').append(''+get_qr_url+'
') + },30); + } + } + }); + } + if(generateQR.length){activate_qr_generator();} + + //Vibrate Buttons + var vibrateButton = $('[data-vibrate]'); + function activate_vibration(){ + $('[data-vibrate]').on('click',function(){var vibrateTime = $(this).data('vibrate'); window.navigator.vibrate(vibrateTime);}); + $('.start-vibrating').on('click',function(){var vibrateTimeInput = $('.vibrate-demo').val(); window.navigator.vibrate(vibrateTimeInput);}) + $('.stop-vibrating').on('click',function(){window.navigator.vibrate(0); $('.vibrate-demo').val(''); }); + } + if(vibrateButton.length){ + activate_vibration(); + } + + //Sharing + var share_link = window.location.href; + var share_title = document.title; + $('.shareToFacebook').prop("href", "https://www.facebook.com/sharer/sharer.php?u="+share_link) + $('.shareToLinkedIn').prop("href", "https://www.linkedin.com/shareArticle?mini=true&url="+share_link+"&title="+share_title+"&summary=&source=") + $('.shareToTwitter').prop("href", "https://twitter.com/home?status="+share_link) + $('.shareToPinterest').prop("href", "https://pinterest.com/pin/create/button/?url=" + share_link) + $('.shareToWhatsApp').prop("href", "whatsapp://send?text=" + share_link) + $('.shareToMail').prop("href", "mailto:?body=" + share_link) + + + //Preload Image + var preloadImages = $('.preload-img'); + $(function() {preloadImages.lazyload({threshold : 500});}); + + //LightBox + $('[data-lightbox]').addClass('default-link'); + lightbox.option({alwaysShowNavOnTouchDevices:true, 'resizeDuration': 200, 'wrapAround': false}) + $('#lightbox').hammer().on("swipe", function (event) { + if (event.gesture.direction === 4) { + $('#lightbox a.lb-prev').trigger('click'); + } else if (event.gesture.direction === 2) { + $('#lightbox a.lb-next').trigger('click'); + } + }); + + //Filterable + if($('.gallery-filter').length > 0){$('.gallery-filter').filterizr(); $('.gallery-filter-active').addClass('color-highlight');} + $('.gallery-filter-controls li').on('click',function(){ + $('.gallery-filter-controls li').removeClass('gallery-filter-active color-highlight'); + $(this).addClass('gallery-filter-active color-highlight'); + }); + + //Gallery Views // Added in 2.0 + var galleryViews = $('.gallery-views'); + var galleryViewControls = $('.gallery-view-controls a'); + var galleryView1 = $('.gallery-view-1-activate'); + var galleryView2 = $('.gallery-view-2-activate'); + var galleryView3 = $('.gallery-view-3-activate'); + + galleryView1.on('click',function(){ + galleryViewControls.removeClass('color-highlight'); + $(this).addClass('color-highlight'); + galleryViews.removeClass().addClass('gallery-views gallery-view-1'); + }); + galleryView2.on('click',function(){ + galleryViewControls.removeClass('color-highlight'); + $(this).addClass('color-highlight'); + galleryViews.removeClass().addClass('gallery-views gallery-view-2'); + }); + galleryView3.on('click',function(){ + galleryViewControls.removeClass('color-highlight'); + $(this).addClass('color-highlight'); + galleryViews.removeClass().addClass('gallery-views gallery-view-3'); + }); + + + //Search + var search = $('[data-search]'); + function activate_search(){ + search.on('keyup', function() { + var searchVal = $(this).val(); + var filterItems = $(this).parent().parent().find('[data-filter-item]'); + if ( searchVal != '' ) { + $('.search-results').removeClass('disabled-search-list'); + $('[data-filter-item]').addClass('disabled-search'); + $('[data-filter-item][data-filter-name*="' + searchVal.toLowerCase() + '"]').removeClass('disabled-search'); + } else { + $('.search-results').addClass('disabled-search-list'); + $('[data-filter-item]').removeClass('disabled-search'); + } + }); + } + if(search.length){activate_search();} + + //Contact Form + var formSubmitted = "false"; + jQuery(document).ready(function(e) { + function t(t, n) { + formSubmitted = "true"; + var r = e("#" + t).serialize(); + e.post(e("#" + t).attr("action"), r, function(n) { + e("#" + t).addClass('disabled'); + $('.contact-form').addClass('disabled'); + e(".formSuccessMessageWrap").fadeIn(500) + }) + } + function n(n, r) { + e(".formValidationError").hide(); + e(".fieldHasError").removeClass("fieldHasError"); + e("#" + n + " .requiredField").each(function(i) { + if (e(this).val() == "" || e(this).val() == e(this).attr("data-dummy")) { + e(this).val(e(this).attr("data-dummy")); + e(this).focus(); + e(this).addClass("fieldHasError"); + e("#" + e(this).attr("id") + "Error").fadeIn(300); + return false + } + if (e(this).hasClass("requiredEmailField")) { + var s = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; + var o = "#" + e(this).attr("id"); + if (!s.test(e(o).val())) { + e(o).focus(); + e(o).addClass("fieldHasError"); + e(o + "Error2").fadeIn(300); + return false + } + } + if (formSubmitted == "false" && i == e("#" + n + " .requiredField").length - 1) { + t(n, r) + } + }) + } + e(".formSuccessMessageWrap").hide(0); + e(".formValidationError").fadeOut(0); + e('input[type="text"], input[type="password"], textarea').focus(function() { + if (e(this).val() == e(this).attr("data-dummy")) { + e(this).val("") + } + }); + e("input, textarea").blur(function() { + if (e(this).val() == "") { + e(this).val(e(this).attr("data-dummy")) + } + }); + e(".contactSubmitButton").on('click',function() { + n(e(this).attr("data-formId")); + return false + }) + }); + + + //Charts + if($('.chart').length > 0){ + var loadJS = function(url, implementationCode, location){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = implementationCode; + scriptTag.onreadystatechange = implementationCode; + location.appendChild(scriptTag); + }; + var call_charts_to_page = function(){ + + var walletChart = $('#wallet-chart'); + var pieChart = $('#pie-chart'); + var doughnutChart = $('#doughnut-chart'); + var polarChart = $('#polar-chart'); + var verticalChart = $('#vertical-chart'); + var horizontalChart = $('#horizontal-chart'); + var lineChart = $('#line-chart'); + + if(walletChart.length){ + var walletDemoChart = new Chart(walletChart, { + type: 'pie', + data: { + labels: ["Expenses", "Income"], + datasets: [{ + backgroundColor: ["#ED5565", "#A0D468"], + borderColor:"rgba(255,255,255,0.5)", + data: [7000,3000] + }] + }, + options: { + responsive: true, maintainAspectRatio:false, + legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, + tooltips:{enabled:true}, animation:{duration:1500} + } + }); + } + + if(pieChart.length){ + var pieDemoChart = new Chart(pieChart, { + type: 'pie', + data: { + labels: ["Facebook", "Twitter", "WhatsApp"], + datasets: [{ + backgroundColor: ["#4A89DC", "#4FC1E9", "#A0D468"], + borderColor:"rgba(255,255,255,0.5)", + data: [7000,3000,2000] + }] + }, + options: { + responsive: true, maintainAspectRatio:false, + legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, + tooltips:{enabled:true}, animation:{duration:1500} + } + }); + } + + if(doughnutChart.length){ + var doughnutDemoChart = new Chart(doughnutChart, { + type: 'doughnut', + data: { + labels: ["Apple", "Samsung", "Google"], + datasets: [{ + backgroundColor: ["#CCD1D9", "#5D9CEC","#FC6E51"], + borderColor:"rgba(255,255,255,0.5)", + data: [5500,4000,3000] + }] + }, + options: { + responsive: true, maintainAspectRatio:false, + legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, + tooltips:{enabled:true}, animation:{duration:1500}, layout:{ padding: {bottom: 30}} + } + }); + } + + if(polarChart.length){ + var polarDemoChart = new Chart(polarChart, { + type: 'polarArea', + data: { + labels: ["Windows", "Mac", "Linux"], + datasets: [{ + backgroundColor: ["#CCD1D9", "#5D9CEC","#FC6E51"], + borderColor:"rgba(255,255,255,0.5)", + data: [7000,10000,5000] + }] + }, + options: { + responsive: true, maintainAspectRatio:false, + legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, + tooltips:{enabled:true}, animation:{duration:1500}, layout:{ padding: {bottom: 30}} + } + }); + } + + if (verticalChart.length){ + var verticalDemoChart = new Chart(verticalChart, { + type: 'bar', + data: { + labels: ["2010", "2015", "2020", "2025"], + datasets: [ + { + label: "iOS", + backgroundColor: "#A0D468", + data: [900,1000,1200,1400] + }, { + label: "Android", + backgroundColor: "#4A89DC", + data: [890,950,1100,1300] + } + ] + }, + options: { + responsive: true, maintainAspectRatio:false, + legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, + title: {display: false} + } + }); + } + + if(horizontalChart.length){ + var horizontalDemoChart = new Chart(horizontalChart, { + type: 'horizontalBar', + data: { + labels: ["2010", "2013", "2016", "2020"], + datasets: [ + { + label: "Mobile", + backgroundColor: "#BF263C", + data: [330,400,580,590] + }, { + label: "Responsive", + backgroundColor: "#EC87C0", + data: [390,450,550,570] + } + ] + }, + options: { + legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, + title: {display: false} + } + }); + } + + if(lineChart.length){ + var lineDemoChart = new Chart(lineChart, { + type: 'line', + data: { + labels: [2000,2005,2010,2015,2010], + datasets: [{ + data: [500,400,300,200,300], + label: "Desktop Web", + borderColor: "#D8334A" + }, { + data: [0,100,300,400,500], + label: "Mobile Web", + borderColor: "#4A89DC" + } + ] + }, + options: { + responsive: true, maintainAspectRatio:false, + legend: {display: true, position:'bottom', labels:{fontSize:13, padding:15,boxWidth:12},}, + title: {display: false} + } + }); + } + } + loadJS('/client/scripts/charts.js', call_charts_to_page, document.body); + } + + + //Local Error Message + if (window.location.protocol === "file:"){$('a').on('mouseover',function(){console.log("You are seeing these errors because your file is on your local computer. For real life simulations please use a Live Server or a Local Server such as AMPPS or WAMPP or simulate a Live Preview using a Code Editor like http://brackets.io (it's 100% free) - PWA functions and AJAX Page Transitions will only work in these scenarios.");});} + + + //Style Generator + var generatedStyles = $('.generated-styles'); + var generatedHighlight = $('.generated-highlight'); + + //HEX to RGBA Converter + function HEXtoRGBA(hex){ + var c; + if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)){ + c= hex.substring(1).split(''); + if(c.length== 3){c= [c[0], c[0], c[1], c[1], c[2], c[2]];} + c= '0x'+c.join(''); + return 'rgba('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+',0.3)'; + } + } + + function highlight_colors(){ + var bodyColor = readCookie('sticky-color-scheme') + if(bodyColor == undefined){var bodyColor = $('body').data('highlight');} + + var bodyBackground = readCookie('sticky-bg-scheme') + if(bodyBackground == undefined){var bodyBackground = $('body').data('background');} + + var data = colorsArray.map(colorsArray => colorsArray[0]); + if (data.indexOf(bodyColor) > -1) { + var highlightLocated = data.indexOf(bodyColor) + var backgroundLocated = data.indexOf(bodyBackground) + var highlightColorCode = colorsArray[highlightLocated][2] + var backgroundColorCode = colorsArray[backgroundLocated][3] + ', ' + colorsArray[backgroundLocated][1] + var highlightColor = '.color-highlight{color:'+highlightColorCode+'!important}' + var highlightBg = '.bg-highlight, .page-item.active a{background-color:'+highlightColorCode+'!important}' + var highlightNav = '.footer-bar-1 .active-nav *, .footer-bar-3 .active-nav i{color:'+highlightColorCode+'!important} .footer-bar-2 strong, .footer-bar-4 strong, .footer-bar-5 strong{background-color:'+highlightColorCode+'!important; color:#FFF;}' + var highlightBorder = '.border-highlight{border-color:'+highlightColorCode+'!important}' + var highlightHeaderTabs = '.header-tab-active{border-color:'+highlightColorCode+'!important}' + var bodyBG = '#page{background: linear-gradient(0deg, '+backgroundColorCode+')!important;} .bg-page{background: linear-gradient(0deg, '+backgroundColorCode+')!important }' + if(!generatedHighlight.length){ + $('body').append('') + $('body').append('') + $('.generated-highlight').append(highlightColor, highlightBg, highlightNav, highlightBorder, highlightHeaderTabs); + $('.generated-background').append(bodyBG); + } + } + } + highlight_colors(); + + //Change Highlight + $('[data-change-highlight]').on('click',function(changeColor){ + var highlightNew = $(this).data('change-highlight'); + $('body').attr('data-highlight',highlightNew); + $('.generated-highlight').remove(); + createCookie('sticky-color-scheme',highlightNew,1) + var data = colorsArray.map(colorsArray => colorsArray[0]); + if (data.indexOf(highlightNew) > -1) { + var highlightLocated = data.indexOf(highlightNew) + if($(this).data('color-light') !== undefined){ + var highlightColorCode = colorsArray[highlightLocated][1] + } else { + var highlightColorCode = colorsArray[highlightLocated][2] + } + var highlightColor = '.color-highlight{color:'+highlightColorCode+'!important}' + var highlightBg = '.bg-highlight{background-color:'+highlightColorCode+'!important}' + var highlightNav = '.active-nav *{color:'+highlightColorCode+'!important} .active-nav2 strong{background-color:'+highlightColorCode+'!important} .active-nav3 strong{background-color:'+highlightColorCode+'!important} .active-nav4 strong{border-color:'+highlightColorCode+'!important}' + var highlightBorder = '.border-highlight{border-color:'+highlightColorCode+'!important}' + $('body').append('') + $('.generated-highlight').append(highlightColor, highlightBg, highlightNav, highlightBorder); + } + }); + + //Change Background + $('[data-change-background]').on('click',function(changeColor){ + var backgroundNew = $(this).data('change-background'); + createCookie('sticky-bg-scheme',backgroundNew,1) + $('.generated-background').remove(); + var data = colorsArray.map(colorsArray => colorsArray[0]); + var backgroundLocated = data.indexOf(backgroundNew) + var backgroundColorCode = colorsArray[backgroundLocated][3] + ', ' + colorsArray[backgroundLocated][1] + var bodyBG = '#page{background: linear-gradient(0deg, '+backgroundColorCode+')!important;} .bg-page{background: linear-gradient(0deg, '+backgroundColorCode+')!important}' + $('body').append('') + $('.generated-background').append(bodyBG); + }); + + if (!generatedStyles.length){ + $('body').append(''); + $('.generated-styles').append('/*Generated using JS for lower CSS file Size, Easier Editing & Faster Loading*/'); + colorsArray.forEach(function (colorValue) {$('.generated-styles').append('.bg-'+colorValue[0]+'-light{ background-color: '+colorValue[1]+'!important; color:#FFFFFF!important;} .bg-'+colorValue[0]+'-light i, .bg-'+colorValue[0]+'-dark i{color:#FFFFFF;} .bg-'+colorValue[0]+'-dark{ background-color: '+colorValue[2]+'!important; color:#FFFFFF!important;} .border-'+colorValue[0]+'-light{ border-color:'+colorValue[1]+'!important;} .border-'+colorValue[0]+'-dark{ border-color:'+colorValue[2]+'!important;} .color-'+colorValue[0]+'-light{ color: '+colorValue[1]+'!important;} .color-'+colorValue[0]+'-dark{ color: '+colorValue[2]+'!important;}');}); + colorsArray.forEach(function (colorFadeValue) {$('.generated-styles').append('.bg-fade-'+colorFadeValue[0]+'-light{ background-color: '+ HEXtoRGBA(colorFadeValue[1]) + '!important; color:#FFFFFF;} .bg-fade-'+colorFadeValue[0]+'-light i, .bg-'+colorFadeValue[0]+'-dark i{color:#FFFFFF;} .bg-fade-'+colorFadeValue[0]+'-dark{ background-color: '+HEXtoRGBA(colorFadeValue[2])+'!important; color:#FFFFFF;} .border-fade-'+colorFadeValue[0]+'-light{ border-color:'+HEXtoRGBA(colorFadeValue[1])+'!important;} .border-fade-'+colorFadeValue[0]+'-dark{ border-color:'+HEXtoRGBA(colorFadeValue[2])+'!important;} .color-fade-'+colorFadeValue[0]+'-light{ color: '+HEXtoRGBA(colorFadeValue[1])+'!important;} .color-fade-'+colorFadeValue[0]+'-dark{ color: '+HEXtoRGBA(colorFadeValue[2])+'!important;}');}); + colorsArray.forEach(function (gradientValue) {$('.generated-styles').append('.bg-gradient-'+gradientValue[0]+'{background-image: linear-gradient(to bottom, '+gradientValue[1]+' 0, '+gradientValue[2]+' 100%)}')}); + socialColorArray.forEach(function (socialColorValue) {$('.generated-styles').append('.bg-'+socialColorValue[0]+'{background-color:'+socialColorValue[1]+'!important; color:#FFFFFF;} .color-'+socialColorValue[0]+'{color:'+socialColorValue[1]+'!important;}')}); + colorsArray.forEach(function (gradientBodyValue) {$('.generated-styles').append('.body-'+gradientBodyValue[0]+'{background-image: linear-gradient(to bottom, '+gradientBodyValue[1]+' 0, '+gradientBodyValue[3]+' 100%)}')}); + } + + // TODO: Hier den site-specific code ausführen + initRegatten(); + + hideLoader(); + + } + //Activating all the plugins + setTimeout(init_template, 0); + + //Activate AJAX Transitions + if(isAJAX === true){ + $(function(){ + 'use strict'; + var options = { + prefetch: true, + prefetchOn: 'mouseover', + cacheLength: 100, + scroll: true, + blacklist: '.default-link', + forms: 'contactForm', + onStart: { + duration:150, // Duration of our animation + render: function ($container) { + $container.addClass('is-exiting');// Add your CSS animation reversing class + $('.menu, .menu-hider').removeClass('menu-active'); + $('#preloader').removeClass('preloader-hide'); + return false; + } + }, + onReady: { + duration: 10, + render: function ($container, $newContent) { + $container.removeClass('is-exiting');// Remove your CSS animation reversing class + $container.html($newContent);// Inject the new content + setTimeout(init_template, 0)//Timeout required to properly initiate all JS Functions. + $('#preloader').removeClass('preloader-hide'); + } + }, + onAfter: function($container, $newContent) { + setTimeout(function(){ + $('.menu').css('display','block'); + $('#preloader').addClass('preloader-hide'); + },150); + } + }; + var smoothState = $('#page').smoothState(options).data('smoothState'); + smoothState.clear(); + }); + } + + //Activate Development mode. Keeps caches clear. + if(isDevelopment === true){ + if(!$('.reloader').length){$('body').append('Developer Mode - Tap to Reload');} + $('.reloader').on('click',function(){window.location.reload(true);}) + caches.delete('workbox-runtime').then(function(){}); + localStorage.clear(); + sessionStorage.clear() + caches.keys().then(cacheNames => { + cacheNames.forEach(cacheName => { + caches.delete(cacheName); + }); + }); + } +}); \ No newline at end of file diff --git a/client/scripts/pwa.js b/client/scripts/pwa.js.php similarity index 93% rename from client/scripts/pwa.js rename to client/scripts/pwa.js.php index f9b54f6..f306efc 100644 --- a/client/scripts/pwa.js +++ b/client/scripts/pwa.js.php @@ -1,7 +1,14 @@ + //Loading the Service Worker if ('serviceWorker' in navigator) { window.addEventListener('load', function() { - navigator.serviceWorker.register('_service-worker.js', {scope: ''}); + // TODO navigator.serviceWorker.register('_service-worker.js', {scope: ''}); }); } @@ -9,7 +16,7 @@ if ('serviceWorker' in navigator) { $(document).ready(function(){ 'use strict' - var pwaVersion = '3.0'; //must be identical to _manifest.json version. If not it will create update window loop + var pwaVersion = ''; //must be identical to _manifest.json version. If not it will create update window loop var pwaCookie = true; // if set to false, the PWA prompt will appear even if the user selects "maybe later" var pwaNoCache = true; // always keep the cache clear to serve the freshest possible content @@ -116,7 +123,7 @@ $(document).ready(function(){ var interval = setInterval(function() { counter--; console.log(counter); - $('.page-update').html('Updating in ... '+ counter + ' seconds'); + $('.page-update').html('Aktuallisierung in ... '+ counter + ' Sekunden'); if (counter == 0) { clearInterval(interval); window.location.reload(true) @@ -141,7 +148,7 @@ $(document).ready(function(){ var dt = new Date(); var maniTimeVersion = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds(); var localVersionNumber = $('link[rel="manifest"]').data('pwa-version'); - var onlineVersionJSON = "_manifest.json?ver=" + maniTimeVersion; + var onlineVersionJSON = "/manifest.json.php?ver=" + maniTimeVersion; var onlineVersionNumber = "Connection Offline. Waiting to Reconect"; $.getJSON(onlineVersionJSON, function(onlineData) {onlineVersionNumber = onlineData.version;}); setTimeout(function(){ @@ -187,8 +194,8 @@ $(document).ready(function(){ var offlineAlerts = $('.offline-message'); if(!offlineAlerts.length){ - $('body').append('No internet connection detected
'); - $('body').append('You are back online
'); + $('body').append('' + strings['inetMsgOffline'] + '
'); + $('body').append('' + strings['inetMsgOnline'] + '
'); } //Offline Function Show diff --git a/client/scripts/regatten.js.php b/client/scripts/regatten.js.php new file mode 100644 index 0000000..2e638a1 --- /dev/null +++ b/client/scripts/regatten.js.php @@ -0,0 +1,101 @@ + + +var randomId = function() { return '_' + Math.random().toString(36).substr(2, 9); } + +var badges = { + more: { + id: 'badge-footer-more', + cnt: 0, + childs: { + news: { + id: 'badge-more-news', + cnt: 0 + } + } + } +}; + +/** + * updateBadge - updates the count in pre-defined badges + * name - name of the badge (e.g. 'more/news'), must exist and must not have childs + * val - new value for badge ('+2' or '-4' for increase/decrease current value) + * returns true, if badge was updated, false on error + */ +var updateBadge = function (name, val) { + const names = name.split('/'); + if (!(names[0] in badges)) return false; + var badge = [badges[names[0]]]; + var cnt = names.length; + for (i = 1; i < cnt; i ++) { + if (!('childs' in badge[i-1]) || !(names[i] in badge[i-1].childs)) return false; + badge[i] = badge[i-1].childs[names[i]]; + } + if ('childs' in badge[cnt-1]) return false; + if (String(val).substr(0, 1) == '+') val = parseInt(badge[cnt-1].cnt) + parseInt(String(val).substr(1)); + else if (String(val).substr(0, 1) == '-') val = parseInt(badge[cnt-1].cnt) - parseInt(String(val).substr(1)); + badge[cnt-1].cnt = parseInt(val); + $('#' + badge[cnt-1].id).text(val == 0 ? '' : val); + for (i = cnt - 2; i >= 0; i --) { + var sum = 0; + for (b in badge[i].childs) { + sum += badge[i].childs[b].cnt; + } + badge[i].cnt = sum + $('#' + badge[i].id).text(sum == 0 ? '' : sum); + } + return true; +} + +/** + * makeToast - creates a snackbar toast + * color - css class as bg-color / font-color (e.g. 'bg-highlight color-white') + * icon - font awesome icon + * text - text to be displayed + * time - time after which toast is hidden (ms), 0 to disable auto-hide + * returns id of created toast (needed for manual hide) + */ +var makeToast = function (color, icon, text, time) { + var id = 'snackbar' + randomId(); + var delay = (time > 0 ? 'data-delay="' + time + '" data-autohide="true"' : 'data-autohide="false"'); + var div = '
- Die gesuchte Seite wurde nicht gefunden.
- Wie wäre es mit der Homepage?
-
';
+ $content .= 'Die gesuchte Seite wurde nicht gefunden.
';
+ $content .= 'Wie wäre es mit der Homepage?';
+ $content .= '
- Diese Seite befindet sich noch in der Entwicklung. -
- -$_CLASS[desc]
"; + + $sp['output'] .= $tpl->load('card', [$content]); + + $content = "- Install Sticky on your home screen, and access it just like a regular app. It really is that simple! + Installiere Regatten.net auf Deinem Startbildschirm und greife wie bei einer normalen App darauf zu. So einfach ist das wirklich.
- Add to Home Screen- Install Sticky on your home screen, and access it just like a regular app. Open your Safari menu and tap "Add to Home Screen". + Installiere Regatten.net auf Deinem Startbildschirm und greife wie bei einer normalen App darauf zu. Öffne Dein Safari-Menü und tippe auf "Zum Startbildschirm hinzufügen".
- Maybe later + Vielleicht später+
+ Eine neue Version unserer App ist verfügbar. Keine Sorge, Du musst nichts machen. Wir aktuallisieren den Inhalt in wenigen Sekunden. +
+ Update +Die App wird neu laden und das Update ist abgeschlossen.
+