$(document).ready(function () { //themes, change CSS with JS //default theme(CSS) is cerulean, change it if needed var defaultTheme = 'cerulean'; var currentTheme = $.cookie('currentTheme') == null ? defaultTheme : $.cookie('currentTheme'); var msie = navigator.userAgent.match(/msie/i); $.browser = {}; $.browser.msie = {}; switchTheme(currentTheme); $('.navbar-toggle').click(function (e) { e.preventDefault(); $('.nav-sm').html($('.navbar-collapse').html()); $('.sidebar-nav').toggleClass('active'); $(this).toggleClass('active'); }); var $sidebarNav = $('.sidebar-nav'); // Hide responsive navbar on clicking outside $(document).mouseup(function (e) { if (!$sidebarNav.is(e.target) // if the target of the click isn't the container... && $sidebarNav.has(e.target).length === 0 && !$('.navbar-toggle').is(e.target) && $('.navbar-toggle').has(e.target).length === 0 && $sidebarNav.hasClass('active') )// ... nor a descendant of the container { e.stopPropagation(); $('.navbar-toggle').click(); } }); $('#themes a').click(function (e) { e.preventDefault(); currentTheme = $(this).attr('data-value'); $.cookie('currentTheme', currentTheme, {expires: 365}); switchTheme(currentTheme); }); function switchTheme(themeName) { if (themeName == 'classic') { $('#bs-css').attr('href', 'bower_components/bootstrap/dist/css/bootstrap.min.css'); } else { $('#bs-css').attr('href', 'css/bootstrap-' + themeName + '.min.css'); } $('#themes i').removeClass('glyphicon glyphicon-ok whitespace').addClass('whitespace'); $('#themes a[data-value=' + themeName + ']').find('i').removeClass('whitespace').addClass('glyphicon glyphicon-ok'); } //ajax menu checkbox $('#is-ajax').click(function (e) { $.cookie('is-ajax', $(this).prop('checked'), {expires: 365}); }); $('#is-ajax').prop('checked', $.cookie('is-ajax') === 'true' ? true : false); //disbaling some functions for Internet Explorer if (msie) { $('#is-ajax').prop('checked', false); $('#for-is-ajax').hide(); $('#toggle-fullscreen').hide(); $('.login-box').find('.input-large').removeClass('span10'); } //highlight current / active link $('ul.main-menu li a').each(function () { if ($($(this))[0].href == String(window.location)) $(this).parent().addClass('active'); }); //establish history variables var History = window.History, // Note: We are using a capital H instead of a lower h State = History.getState(), $log = $('#log'); //bind to State Change History.Adapter.bind(window, 'statechange', function () { // Note: We are using statechange instead of popstate var State = History.getState(); // Note: We are using History.getState() instead of event.state $.ajax({ url: State.url, success: function (msg) { $('#content').html($(msg).find('#content').html()); $('#loading').remove(); $('#content').fadeIn(); var newTitle = $(msg).filter('title').text(); $('title').text(newTitle); docReady(); } }); }); //ajaxify menus $('a.ajax-link').click(function (e) { if (msie) e.which = 1; if (e.which != 1 || !$('#is-ajax').prop('checked') || $(this).parent().hasClass('active')) return; e.preventDefault(); $('.sidebar-nav').removeClass('active'); $('.navbar-toggle').removeClass('active'); $('#loading').remove(); $('#content').fadeOut().parent().append('<div id="loading" class="center">Loading...<div class="center"></div></div>'); var $clink = $(this); History.pushState(null, null, $clink.attr('href')); $('ul.main-menu li.active').removeClass('active'); $clink.parent('li').addClass('active'); }); $('.accordion > a').click(function (e) { e.preventDefault(); var $ul = $(this).siblings('ul'); var $li = $(this).parent(); if ($ul.is(':visible')) $li.removeClass('active'); else $li.addClass('active'); $ul.slideToggle(); }); $('.accordion li.active:first').parents('ul').slideDown(); //other things to do on document ready, separated for ajax calls docReady(); }); function docReady() { //prevent # links from moving to top $('a[href="#"][data-top!=true]').click(function (e) { e.preventDefault(); }); //notifications $('.noty').click(function (e) { e.preventDefault(); var options = $.parseJSON($(this).attr('data-noty-options')); noty(options); }); //chosen - improves select $('[data-rel="chosen"],[rel="chosen"]').chosen(); //tabs $('#myTab a:first').tab('show'); $('#myTab a').click(function (e) { e.preventDefault(); $(this).tab('show'); }); //tooltip $('[data-toggle="tooltip"]').tooltip(); //auto grow textarea $('textarea.autogrow').autogrow(); //popover $('[data-toggle="popover"]').popover(); //iOS / iPhone style toggle switch $('.iphone-toggle').iphoneStyle(); //star rating $('.raty').raty({ score: 4 //default stars }); //uploadify - multiple uploads $('#file_upload').uploadify({ 'swf': 'misc/uploadify.swf', 'uploader': 'misc/uploadify.php' // Put your options here }); //gallery controls container animation $('ul.gallery li').hover(function () { $('img', this).fadeToggle(1000); $(this).find('.gallery-controls').remove(); $(this).append('<div class="well gallery-controls">' + '<p><a href="#" class="gallery-edit btn"><i class="glyphicon glyphicon-edit"></i></a> <a href="#" class="gallery-delete btn"><i class="glyphicon glyphicon-remove"></i></a></p>' + '</div>'); $(this).find('.gallery-controls').stop().animate({'margin-top': '-1'}, 400); }, function () { $('img', this).fadeToggle(1000); $(this).find('.gallery-controls').stop().animate({'margin-top': '-30'}, 200, function () { $(this).remove(); }); }); //gallery image controls example //gallery delete $('.thumbnails').on('click', '.gallery-delete', function (e) { e.preventDefault(); //get image id //alert($(this).parents('.thumbnail').attr('id')); $(this).parents('.thumbnail').fadeOut(); }); //gallery edit $('.thumbnails').on('click', '.gallery-edit', function (e) { e.preventDefault(); //get image id //alert($(this).parents('.thumbnail').attr('id')); }); //gallery colorbox $('.thumbnail a').colorbox({ rel: 'thumbnail a', transition: "elastic", maxWidth: "95%", maxHeight: "95%", slideshow: true }); //gallery fullscreen $('#toggle-fullscreen').button().click(function () { var button = $(this), root = document.documentElement; if (!button.hasClass('active')) { $('#thumbnails').addClass('modal-fullscreen'); if (root.webkitRequestFullScreen) { root.webkitRequestFullScreen( window.Element.ALLOW_KEYBOARD_INPUT ); } else if (root.mozRequestFullScreen) { root.mozRequestFullScreen(); } } else { $('#thumbnails').removeClass('modal-fullscreen'); (document.webkitCancelFullScreen || document.mozCancelFullScreen || $.noop).apply(document); } }); //tour if ($('.tour').length && typeof(tour) == 'undefined') { var tour = new Tour(); tour.addStep({ element: "#content", /* html element next to which the step popover should be shown */ placement: "top", title: "Custom Tour", /* title of the popover */ content: "You can create tour like this. Click Next." /* content of the popover */ }); tour.addStep({ element: ".theme-container", placement: "left", title: "Themes", content: "You change your theme from here." }); tour.addStep({ element: "ul.main-menu a:first", title: "Dashboard", content: "This is your dashboard from here you will find highlights." }); tour.addStep({ element: "#for-is-ajax", title: "Ajax", content: "You can change if pages load with Ajax or not." }); tour.addStep({ element: ".top-nav a:first", placement: "bottom", title: "Visit Site", content: "Visit your front end from here." }); tour.restart(); } //datatable $('.datatable').dataTable({ "sDom": "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-12'i><'col-md-12 center-block'p>>", "sPaginationType": "bootstrap", "oLanguage": { "sLengthMenu": "_MENU_ records per page" } }); $('.btn-close').click(function (e) { e.preventDefault(); $(this).parent().parent().parent().fadeOut(); }); $('.btn-minimize').click(function (e) { e.preventDefault(); var $target = $(this).parent().parent().next('.box-content'); if ($target.is(':visible')) $('i', $(this)).removeClass('glyphicon-chevron-up').addClass('glyphicon-chevron-down'); else $('i', $(this)).removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-up'); $target.slideToggle(); }); $('.btn-setting').click(function (e) { e.preventDefault(); $('#myModal').modal('show'); }); $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, defaultDate: '2014-06-12', events: [ { title: 'All Day Event', start: '2014-06-01' }, { title: 'Long Event', start: '2014-06-07', end: '2014-06-10' }, { id: 999, title: 'Repeating Event', start: '2014-06-09T16:00:00' }, { id: 999, title: 'Repeating Event', start: '2014-06-16T16:00:00' }, { title: 'Meeting', start: '2014-06-12T10:30:00', end: '2014-06-12T12:30:00' }, { title: 'Lunch', start: '2014-06-12T12:00:00' }, { title: 'Birthday Party', start: '2014-06-13T07:00:00' }, { title: 'Click for Google', url: 'http://google.com/', start: '2014-06-28' } ] }); } //additional functions for data table $.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) { return { "iStart": oSettings._iDisplayStart, "iEnd": oSettings.fnDisplayEnd(), "iLength": oSettings._iDisplayLength, "iTotal": oSettings.fnRecordsTotal(), "iFilteredTotal": oSettings.fnRecordsDisplay(), "iPage": Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength), "iTotalPages": Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength) }; } $.extend($.fn.dataTableExt.oPagination, { "bootstrap": { "fnInit": function (oSettings, nPaging, fnDraw) { var oLang = oSettings.oLanguage.oPaginate; var fnClickHandler = function (e) { e.preventDefault(); if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) { fnDraw(oSettings); } }; $(nPaging).addClass('pagination').append( '<ul class="pagination">' + '<li class="prev disabled"><a href="#">← ' + oLang.sPrevious + '</a></li>' + '<li class="next disabled"><a href="#">' + oLang.sNext + ' → </a></li>' + '</ul>' ); var els = $('a', nPaging); $(els[0]).bind('click.DT', { action: "previous" }, fnClickHandler); $(els[1]).bind('click.DT', { action: "next" }, fnClickHandler); }, "fnUpdate": function (oSettings, fnDraw) { var iListLength = 5; var oPaging = oSettings.oInstance.fnPagingInfo(); var an = oSettings.aanFeatures.p; var i, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2); if (oPaging.iTotalPages < iListLength) { iStart = 1; iEnd = oPaging.iTotalPages; } else if (oPaging.iPage <= iHalf) { iStart = 1; iEnd = iListLength; } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) { iStart = oPaging.iTotalPages - iListLength + 1; iEnd = oPaging.iTotalPages; } else { iStart = oPaging.iPage - iHalf + 1; iEnd = iStart + iListLength - 1; } for (i = 0, iLen = an.length; i < iLen; i++) { // remove the middle elements $('li:gt(0)', an[i]).filter(':not(:last)').remove(); // add the new list items and their event handlers for (j = iStart; j <= iEnd; j++) { sClass = (j == oPaging.iPage + 1) ? 'class="active"' : ''; $('<li ' + sClass + '><a href="#">' + j + '</a></li>') .insertBefore($('li:last', an[i])[0]) .bind('click', function (e) { e.preventDefault(); oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength; fnDraw(oSettings); }); } // add / remove disabled classes from the static elements if (oPaging.iPage === 0) { $('li:first', an[i]).addClass('disabled'); } else { $('li:first', an[i]).removeClass('disabled'); } if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) { $('li:last', an[i]).addClass('disabled'); } else { $('li:last', an[i]).removeClass('disabled'); } } } } });