var App = function () {
"use strict"; var chartColors = ['#e5412d', '#f0ad4e', '#444', '#888','#555','#999','#bbb','#ccc','#eee']; return { init: init, chartColors: chartColors, debounce: debounce }; function init () { initLayout (); initICheck (); initSelect2 (); initTableCheckable (); initLightbox (); initEnhancedAccordion (); initDataTableHelper (); initFormValidation (); initTooltips (); initDatepicker (); initTimepicker (); initColorpicker (); initAutosize (); initBackToTop (); } function initLayout () { $('#site-logo').prependTo ('#wrapper'); $('html').removeClass ('no-js'); Nav.init (); $('body').on('touchstart.dropdown', '.dropdown-menu', function (e) { e.stopPropagation(); }); } function initTableCheckable () { if ($.fn.tableCheckable) { $('.table-checkable') .tableCheckable () .on ('masterChecked', function (event, master, slaves) { if ($.fn.iCheck) { $(slaves).iCheck ('update'); } }) .on ('slaveChecked', function (event, master, slave) { if ($.fn.iCheck) { $(master).iCheck ('update'); } }); } } function initAutosize () { if ($.fn.autosize) { $('.ui-textarea-autosize').each(function() { if($(this).data ('animate')) { $(this).addClass ('autosize-animate').autosize(); } else { $(this).autosize(); } }); } } function initEnhancedAccordion () { $('.accordion .accordion-toggle').on('click', function (e) { $(e.target).parent ().parent ().parent ().addClass('open'); }); $('.accordion .accordion-toggle').on('click', function (e) { $(this).parents ('.panel').siblings ().removeClass ('open'); }); $('.accordion').each (function () { $(this).find ('.panel-collapse.in').parent ().addClass ('open'); }); } function initFormValidation () { if ($.fn.parsley) { $('.parsley-form').each (function () { console.log ($(this)) $(this).parsley ({ trigger: 'change', errors: { container: function (element, isRadioOrCheckbox) { if (element.parents ('form').is ('.form-horizontal')) { return element.parents ("*[class^='col-']"); } return element.parents ('.form-group'); } } }); }); } } function initLightbox () { if ($.fn.magnificPopup) { $('.ui-lightbox').magnificPopup({ type: 'image', closeOnContentClick: false, closeBtnInside: true, fixedContentPos: true, mainClass: 'mfp-no-margins mfp-with-zoom', // class to remove default margin from left and right side image: { verticalFit: true, tError: '<a href="%url%">The image #%curr%</a> could not be loaded.' } }); $('.ui-lightbox-video, .ui-lightbox-iframe').magnificPopup({ disableOn: 700, type: 'iframe', mainClass: 'mfp-fade', removalDelay: 160, preloader: false, fixedContentPos: false }); $('.ui-lightbox-gallery').magnificPopup({ delegate: 'a', type: 'image', tLoading: 'Loading image #%curr%...', mainClass: 'mfp-img-mobile', gallery: { enabled: true, navigateByImgClick: true, preload: [0,1] // Will preload 0 - before current, and 1 after the current image }, image: { tError: '<a href="%url%">The image #%curr%</a> could not be loaded.', titleSrc: function(item) { return item.el.attr('title') + '<small>by Marsel Van Oosten</small>'; } } }); } } function initSelect2 () { if ($.fn.select2) { $('.ui-select2').select2({ allowClear: true, placeholder: "Select..." }); } } function initDatepicker () { if ($.fn.datepicker) { $('.ui-datepicker').datepicker ({ autoclose: true }); } } function initTimepicker () { if ($.fn.timepicker) { var pickers = $('.ui-timepicker, .ui-timepicker-modal'); pickers.each (function () { $(this).parent ('.input-group').addClass ('bootstrap-timepicker'); if ($(this).is ('.ui-timepicker')) { $(this).timepicker (); } else { $(this).timepicker({ template: 'modal' }); } }); } } function initColorpicker () { if ($.fn.simplecolorpicker) { $('.ui-colorpicker').each (function (i) { var picker = $(this).data ('picker'); $(this).simplecolorpicker({ picker: picker }); }); } } function initTooltips () { if ($.fn.tooltip) { $('.ui-tooltip').tooltip (); } if ($.fn.popover) { $('.ui-popover').popover ({ container: 'body' }); } } function initICheck () { if ($.fn.iCheck) { $('.icheck-input').iCheck({ checkboxClass: 'icheckbox_minimal-blue', radioClass: 'iradio_minimal-blue', inheritClass: true }).on ('ifChanged', function (e) { $(e.currentTarget).trigger ('change'); }); } } function initBackToTop () { var backToTop = $('<a>', { id: 'back-to-top', href: '#top' }); var icon = $('<i>', { class: 'fa fa-chevron-up' }); backToTop.appendTo ('body'); icon.appendTo (backToTop); backToTop.hide(); $(window).scroll(function () { if ($(this).scrollTop() > 150) { backToTop.fadeIn (); } else { backToTop.fadeOut (); } }); backToTop.click (function (e) { e.preventDefault (); $('body, html').animate({ scrollTop: 0 }, 600); }); } function initDataTableHelper () { if ($.fn.dataTable) { $('[data-provide="datatable"]').each (function () { $(this).addClass ('dataTable-helper'); var defaultOptions = { paginate: false, search: false, info: false, lengthChange: false, displayRows: 10 }, dataOptions = $(this).data (), helperOptions = $.extend (defaultOptions, dataOptions), $thisTable, tableConfig = {}; tableConfig.iDisplayLength = helperOptions.displayRows; tableConfig.bFilter = true; tableConfig.bSort = true; tableConfig.bPaginate = false; tableConfig.bLengthChange = false; tableConfig.bInfo = false; if (helperOptions.paginate) { tableConfig.bPaginate = true; } if (helperOptions.lengthChange) { tableConfig.bLengthChange = true; } if (helperOptions.info) { tableConfig.bInfo = true; } if (helperOptions.search) { $(this).parent ().removeClass ('datatable-hidesearch'); } tableConfig.aaSorting = []; tableConfig.aoColumns = []; $(this).find ('thead tr th').each (function (index, value) { var sortable = ($(this).data ('sortable') === true) ? true : false; tableConfig.aoColumns.push ({ 'bSortable': sortable }); if ($(this).data ('direction')) { tableConfig.aaSorting.push ([index, $(this).data ('direction')]); } }); // Create the datatable $thisTable = $(this).dataTable (tableConfig); if (!helperOptions.search) { $thisTable.parent ().find ('.dataTables_filter').remove (); } var filterableCols = $thisTable.find ('thead th').filter ('[data-filterable="true"]'); if (filterableCols.length > 0) { var columns = $thisTable.fnSettings().aoColumns, $row, th, $col, showFilter; $row = $('<tr>', { cls: 'dataTable-filter-row' }).appendTo ($thisTable.find ('thead')); for (var i=0; i<columns.length; i++) { $col = $(columns[i].nTh.outerHTML); showFilter = ($col.data ('filterable') === true) ? 'show' : 'hide'; th = '<th class="' + $col.prop ('class') + '">'; th += '<input type="text" class="form-control input-sm ' + showFilter + '" placeholder="' + $col.text () + '">'; th += '</th>'; $row.append (th); } $row.find ('th').removeClass ('sorting sorting_disabled sorting_asc sorting_desc sorting_asc_disabled sorting_desc_disabled'); $thisTable.find ('thead input').keyup( function () { $thisTable.fnFilter( this.value, $thisTable.oApi._fnVisibleToColumnIndex( $thisTable.fnSettings(), $thisTable.find ('thead input[type=text]').index(this) ) ); }); $thisTable.addClass ('datatable-columnfilter'); } }); $('.dataTables_filter input').prop ('placeholder', 'Search...'); } } function debounce (func, wait, immediate) { var timeout, args, context, timestamp, result; return function() { context = this; args = arguments; timestamp = new Date(); var later = function() { var last = (new Date()) - timestamp; if (last < wait) { timeout = setTimeout(later, wait - last); } else { timeout = null; if (!immediate) result = func.apply(context, args); } }; var callNow = immediate && !timeout; if (!timeout) { timeout = setTimeout(later, wait); } if (callNow) result = func.apply(context, args); return result; }; }
}();
var Nav = function () {
return { init: init }; function init () { var mainnav = $('#main-nav'), openActive = mainnav.is ('.open-active'), navActive = mainnav.find ('> .active'); mainnav.find ('> .dropdown > a').bind ('click', navClick); if (openActive && navActive.is ('.dropdown')) { navActive.addClass ('opened').find ('.sub-nav').show (); } } function navClick (e) { e.preventDefault (); var li = $(this).parents ('li'); if (li.is ('.opened')) { closeAll (); } else { closeAll (); li.addClass ('opened').find ('.sub-nav').slideDown (); } } function closeAll () { $('.sub-nav').slideUp ().parents ('li').removeClass ('opened'); }
}();
$(function () {
App.init ();
});