1"use strict"; 2 3//hidding menu elements that do not fit in menu width 4//processing center logo 5function menuHideExtraElements() { 6 7 return; 8 9 //cleaneng changed elements 10 jQuery('.sf-more-li, .sf-logo-li').remove(); 11 var windowWidth = jQuery('body').innerWidth(); 12 13 jQuery('.sf-menu').each(function(){ 14 var $thisMenu = jQuery(this); 15 var $menuWraper = $thisMenu.closest('.mainmenu_wrapper'); 16 $menuWraper.attr('style', ''); 17 if (windowWidth > 991) { 18 //grab all main menu first level items 19 var $menuLis = $menuWraper.find('.sf-menu > li'); 20 $menuLis.removeClass('sf-md-hidden'); 21 22 var $headerLogoCenter = $thisMenu.closest('.header_logo_center'); 23 var logoWidth = 0; 24 var summaryLiWidth = 0; 25 26 if ( $headerLogoCenter.length ) { 27 var $logo = $headerLogoCenter.find('.logo'); 28 // 30/2 - left and right margins 29 logoWidth = $logo.outerWidth(true) + 70; 30 } 31 32 // var wrapperWidth = jQuery('.sf-menu').width(); 33 var wrapperWidth = $menuWraper.outerWidth(true); 34 $menuLis.each(function(index) { 35 var elementWidth = jQuery(this).outerWidth(); 36 summaryLiWidth += elementWidth; 37 if(summaryLiWidth >= (wrapperWidth-logoWidth)) { 38 var $newLi = jQuery('<li class="sf-more-li"><a>...</a><ul class="sub-menu"></ul></li>'); 39 jQuery('ul.children').addClass('sub-menu'); 40 jQuery($menuLis[index - 1 ]).before($newLi); 41 var newLiWidth = jQuery($newLi).outerWidth(true); 42 var $extraLiElements = $menuLis.filter(':gt('+ ( index - 2 ) +')'); 43 $extraLiElements.clone().appendTo($newLi.find('ul'));
44 $extraLiElements.addClass('sf-md-hidden'); 45 return false; 46 } 47 }); 48 49 //processing center logo 50 if ( $headerLogoCenter.length ) { 51 var $menuLisVisible = $headerLogoCenter.find('.sf-menu > li:not(.sf-md-hidden)'); 52 var menuLength = $menuLisVisible.length; 53 var summaryLiVisibleWidth = 0; 54 $menuLisVisible.each(function(){ 55 summaryLiVisibleWidth += jQuery(this).outerWidth(); 56 }); 57 58 var centerLi = Math.floor( menuLength / 2 ); 59 if ( (menuLength % 2 === 0) ) { 60 centerLi--; 61 } 62 var $liLeftFromLogo = $menuLisVisible.eq(centerLi); 63 $liLeftFromLogo.after('<li class="sf-logo-li"></li>'); 64 $headerLogoCenter.find('.sf-logo-li').width(logoWidth); 65 var liLeftRightDotX = $liLeftFromLogo.offset().left + $liLeftFromLogo.outerWidth(); 66 var logoLeftDotX = windowWidth/2 - logoWidth/2; 67 var menuLeftOffset = liLeftRightDotX - logoLeftDotX; 68 $menuWraper.css({'left': -menuLeftOffset}) 69 } 70 71 }// > 991 72 }); //sf-menu each 73} //menuHideExtraElements 74 75function initMegaMenu() { 76 var $megaMenu = jQuery('.mainmenu_wrapper .mega-menu'); 77 if($megaMenu.length) { 78 var windowWidth = jQuery('body').innerWidth(); 79 if (windowWidth > 991) { 80 $megaMenu.each(function(){ 81 var $thisMegaMenu = jQuery(this); 82 //temporary showing mega menu to propper size calc 83 $thisMegaMenu.css({'display': 'block', 'left': 'auto'}); 84 var thisWidth = $thisMegaMenu.outerWidth(); 85 var thisOffset = $thisMegaMenu.offset().left; 86 var thisLeft = (thisOffset + (thisWidth/2)) - windowWidth/2; 87 $thisMegaMenu.css({'left' : -thisLeft, 'display': 'none'}); 88 if(!$thisMegaMenu.closest('ul').hasClass('nav')) { 89 $thisMegaMenu.css('left', ''); 90 } 91 }); 92 } 93 } 94} 95 96function pieChart() { 97 //circle progress bar 98 if (jQuery().easyPieChart) { 99 100 jQuery('.chart').each(function(){ 101 102 var $currentChart = jQuery(this); 103 var imagePos = $currentChart.offset().top; 104 var topOfWindow = jQuery(window).scrollTop(); 105 if (imagePos < topOfWindow+900) { 106 107 var size = $currentChart.data('size') ? $currentChart.data('size') : 270; 108 var line = $currentChart.data('line') ? $currentChart.data('line') : 20; 109 var bgcolor = $currentChart.data('bgcolor') ? $currentChart.data('bgcolor') : '#ffffff'; 110 var trackcolor = $currentChart.data('trackcolor') ? $currentChart.data('trackcolor') : '#c14240'; 111 var speed = $currentChart.data('speed') ? $currentChart.data('speed') : 3000; 112 113 $currentChart.easyPieChart({ 114 barColor: trackcolor, 115 trackColor: bgcolor, 116 scaleColor: false, 117 scaleLength: false, 118 lineCap: 'butt', 119 lineWidth: line, 120 size: size, 121 rotate: 0, 122 animate: speed, 123 onStep: function(from, to, percent) { 124 jQuery(this.el).find('.percent').text(Math.round(percent)); 125 } 126 }); 127 } 128 }); 129 } 130} 131 132function affixSidebarInit() { 133 var $affixAside = jQuery('.affix-aside'); 134 if ($affixAside.length) { 135 136 //on stick and unstick event 137 $affixAside.on('affix.bs.affix', function(e) { 138 var affixWidth = $affixAside.width() - 1; 139 var affixLeft = $affixAside.offset().left; 140 $affixAside 141 .width(affixWidth) 142 .css("left", affixLeft); 143 }).on('affix-top.bs.affix affix-bottom.bs.affix', function(e) { 144 $affixAside.css({"width": "", "left": ""}); 145 }); 146 147 //counting offset 148 var offsetTop = $affixAside.offset().top - jQuery('.page_header').height(); 149 var offsetBottom = jQuery('.page_footer').outerHeight(true) + jQuery('.page_copyright').outerHeight(true); 150 151 $affixAside.affix({ 152 offset: { 153 top: offsetTop, 154 bottom: offsetBottom 155 }, 156 }); 157 158 jQuery(window).on('resize', function() { 159 $affixAside.css({"width": "", "left": ""}); 160 161 if( $affixAside.hasClass('affix')) { 162 //returning sidebar in top position if it is sticked because of unexpacted behavior 163 $affixAside.removeClass("affix").css("left", "").addClass("affix-top"); 164 } 165 166 var offsetTop = jQuery('.page_topline').outerHeight(true) 167 + jQuery('.page_toplogo').outerHeight(true) 168 + jQuery('.page_breadcrumbs').outerHeight(true) 169 + jQuery('.page_header').outerHeight(true); 170 var offsetBottom = jQuery('.page_footer').outerHeight(true) + jQuery('.page_copyright').outerHeight(true); 171 172 $affixAside.data('bs.affix').options.offset.top = offsetTop; 173 $affixAside.data('bs.affix').options.offset.bottom = offsetBottom; 174 175 $affixAside.affix('checkPosition'); 176 177 }); 178 179 }//eof checking of affix sidebar existing 180} 181 182//function that initiating template plugins on document.ready event 183function documentReadyInit() { 184 //////////// 185 //mainmenu// 186 ////////////
187 if (jQuery().scrollbar) { 188 jQuery('[class*="scrollbar-"]').scrollbar(); 189 } 190 if (jQuery().superfish) { 191 jQuery('ul.sf-menu').superfish({ 192 popUpSelector: 'ul:not(.mega-menu ul), .mega-menu ', 193 delay: 700, 194 animation: {opacity:'show', marginTop: -1}, 195 animationOut: {opacity: 'hide', marginTop: -15}, 196 speed: 200, 197 speedOut: 200, 198 disableHI: false, 199 cssArrows: true, 200 autoArrows: true, 201 onInit: function () { 202 var $thisMenu = jQuery(this); 203 $thisMenu.find('.sf-with-ul').after('<span class="sf-menu-item-mobile-toggler"/>'); 204 $thisMenu.find('.sf-menu-item-mobile-toggler').on('click', function (e) { 205 var $parentLi = jQuery(this).parent(); 206 if($parentLi.hasClass('sfHover')) { 207 $parentLi.superfish('hide'); 208 } 209 }); 210 } 211 }); 212 jQuery('ul.sf-menu-side').superfish({ 213 popUpSelector: 'ul:not(.mega-menu ul), .mega-menu ', 214 delay: 500, 215 animation: {opacity:'show', height: 100 +'%'}, 216 animationOut: {opacity: 'hide', height: 0}, 217 speed: 400, 218 speedOut: 300, 219 disableHI: false, 220 cssArrows: true, 221 autoArrows: true 222 }); 223 } 224 225 //toggle mobile menu 226 jQuery('.toggle_menu').on('click', function(){ 227 jQuery('.toggle_menu').toggleClass('mobile-active'); 228 jQuery('.page_header').toggleClass('mobile-active'); 229 }); 230 231 jQuery('.mainmenu a').on('click', function(){ 232 if (!jQuery(this).hasClass('sf-with-ul')) { 233 jQuery('.toggle_menu').toggleClass('mobile-active'); 234 jQuery('.page_header').toggleClass('mobile-active'); 235 } 236 }); 237 238 //side header processing 239 var $sideHeader = jQuery('.page_header_side'); 240 if ($sideHeader.length) { 241 var $body = jQuery('body'); 242 jQuery('.toggle_menu_side').on('click', function(){ 243 if (jQuery(this).hasClass('header-slide')) { 244 $sideHeader.toggleClass('active-slide-side-header'); 245 } else { 246 if(jQuery(this).parent().hasClass('header_side_right')) { 247 $body.toggleClass('active-side-header slide-right'); 248 } else { 249 $body.toggleClass('active-side-header'); 250 } 251 } 252 }); 253 // toggle sub-menus visibility on menu-side-click 254 jQuery('ul.menu-side-click').find('li').each(function(){ 255 var $thisLi = jQuery(this); 256 //toggle submenu only for menu items with submenu 257 if ($thisLi.find('ul').length) { 258 $thisLi 259 .append('<span class="activate_submenu"></span>') 260 .find('.activate_submenu') 261 .on('click', function() { 262 var $thisSpan = jQuery(this); 263 if ($thisSpan.parent().hasClass('active-submenu')) { 264 $thisSpan.parent().removeClass('active-submenu'); 265 return; 266 } 267 $thisLi.addClass('active-submenu').siblings().removeClass('active-submenu'); 268 }); 269 } //eof sumbenu check 270 }); 271 //hidding side header on click outside header 272 jQuery('body').on('click', function( e ) { 273 if ( !jQuery(e.target).closest('.page_header_side').length ) { 274 $sideHeader.removeClass('active-slide-side-header'); 275 $body.removeClass('active-side-header slide-right'); 276 } 277 }); 278 } //sideHeader check 279 280 //1 and 2/3/4th level mainmenu offscreen fix 281 var MainWindowWidth = jQuery(window).width(); 282 jQuery(window).on('resize', function(){ 283 MainWindowWidth = jQuery(window).width(); 284 }); 285 //2/3/4 levels 286 jQuery('.mainmenu_wrapper .sf-menu').on('mouseover', 'ul li', function(){ 287 // jQuery('.mainmenu').on('mouseover', 'ul li', function(){ 288 if(MainWindowWidth > 991) { 289 var $this = jQuery(this); 290 // checks if third level menu exist 291 var subMenuExist = $this.find('ul').length; 292 if( subMenuExist > 0){ 293 var subMenuWidth = $this.find('ul, div').first().width(); 294 var subMenuOffset = $this.find('ul, div').first().parent().offset().left + subMenuWidth; 295 // if sub menu is off screen, give new position 296 if((subMenuOffset + subMenuWidth) > MainWindowWidth){ 297 var newSubMenuPosition = subMenuWidth + 0; 298 $this.find('ul, div').first().css({ 299 left: -newSubMenuPosition, 300 }); 301 } else { 302 $this.find('ul, div').first().css({ 303 left: '100%', 304 });
305 } 306 } 307 } 308 //1st level 309 }).on('mouseover', '> li', function(){ 310 if(MainWindowWidth > 991) { 311 var $this = jQuery(this); 312 var subMenuExist = $this.find('ul').length; 313 if( subMenuExist > 0){ 314 var subMenuWidth = $this.find('ul').width(); 315 var subMenuOffset = $this.find('ul').parent().offset().left; 316 // if sub menu is off screen, give new position 317 if((subMenuOffset + subMenuWidth) > MainWindowWidth){ 318 var newSubMenuPosition = MainWindowWidth - (subMenuOffset + subMenuWidth); 319 $this.find('ul').first().css({ 320 left: newSubMenuPosition, 321 }); 322 } 323 } 324 } 325 }); 326 327 ///////////////////////////////////////// 328 //single page localscroll and scrollspy// 329 ///////////////////////////////////////// 330 var navHeight = jQuery('.page_header').outerHeight(true); 331 if (jQuery('.mainmenu_wrapper').length) { 332 jQuery('body').scrollspy({ 333 target: '.mainmenu_wrapper', 334 offset: navHeight 335 }) 336 } 337 if (jQuery('.mainmenu_side_wrapper').length) { 338 jQuery('body').scrollspy({ 339 target: '.mainmenu_side_wrapper', 340 offset: navHeight 341 }); 342 } 343 if (jQuery().localScroll) { 344 jQuery('.mainmenu_wrapper > ul, .mainmenu_side_wrapper > ul, #land').localScroll({ 345 duration:900, 346 easing:'easeInOutQuart', 347 offset: -navHeight+10 348 }); 349 } 350 351 //toTop 352 if (jQuery().UItoTop) { 353 jQuery().UItoTop({ easingType: 'easeOutQuart' }); 354 } 355 356 //parallax 357 if (jQuery().parallax) { 358 jQuery('.parallax').parallax("50%", 0.01); 359 } 360 361 // Date Time Picker 362 jQuery('[id ^= id-date]').each(function(){ 363 var datePicker = jQuery(this); 364 datePicker.datetimepicker({ 365 pickDate: datePicker.data('pick-date'), 366 pickTime: datePicker.data('pick-time'), 367 useSeconds: false, 368 language: datePicker.data('language'), 369 debug: false, 370 }); 371 }); 372 373 // Smooth scrolling for slider button 374 if (jQuery().localScroll) { 375 jQuery('.mainmenu_wrapper > ul, .mainmenu_side_wrapper > ul, #land, .scroll_button_wrap').localScroll({ 376 duration:900, 377 easing:'easeInOutQuart', 378 offset: -navHeight+10 379 }); 380 } 381 382 if (jQuery().localScroll) { 383 jQuery('.divided-content').localScroll({ 384 duration:900, 385 easing:'easeInOutQuart', 386 offset: -navHeight+10 387 }); 388 } 389 390 //prettyPhoto 391 if (jQuery().prettyPhoto) { 392 jQuery("a[data-gal^='prettyPhoto']").prettyPhoto({ 393 hook: 'data-gal', 394 theme: 'facebook' /* light_rounded / dark_rounded / light_square / dark_square / facebook / pp_default*/ 395 }); 396 //for woocommerce products gallery 397 jQuery(" a[data-rel^='prettyPhoto']").prettyPhoto({ 398 hook: 'data-rel', 399 theme: 'facebook' /* light_rounded / dark_rounded / light_square / dark_square / facebook / pp_default*/ 400 }); 401 } 402 403 //////////////////////////////////////// 404 //init Twitter Bootstrap JS components// 405 //////////////////////////////////////// 406 //bootstrap carousel 407 if (jQuery().carousel) { 408 jQuery('.carousel').carousel(); 409 } 410 //bootstrap tab - show first tab 411 jQuery('.nav-tabs').each(function() { 412 jQuery(this).find('a').first().tab('show'); 413 }); 414 jQuery('.tab-content').each(function() { 415 jQuery(this).find('.tab-pane').first().addClass('fade in'); 416 }); 417 //bootstrap collapse - show first tab 418 jQuery('.panel-group').each(function() { 419 jQuery(this).find('a').first().filter('.collapsed').trigger('click'); 420 }); 421 //tooltip 422 if (jQuery().tooltip) { 423 jQuery('[data-toggle="tooltip"]').tooltip(); 424 } 425 426 //////////////// 427 //owl carousel// 428 //////////////// 429 if (jQuery().owlCarousel) { 430 jQuery('.owl-carousel').each(function() { 431 var $carousel = jQuery(this); 432 var loop = $carousel.data('loop') ? $carousel.data('loop') : false; 433 var margin = ($carousel.data('margin') || $carousel.data('margin') == 0) ? $carousel.data('margin') : 30; 434 var nav = $carousel.data('nav') ? $carousel.data('nav') : false; 435 var dots = $carousel.data('dots') ? $carousel.data('dots') : false; 436 var themeClass = $carousel.data('themeclass') ? $carousel.data('themeclass') : 'owl-theme'; 437 var center = $carousel.data('center') ? $carousel.data('center') : false; 438 var items = $carousel.data('items') ? $carousel.data('items') : 4; 439 var autoplay = $carousel.data('autoplay') ? $carousel.data('autoplay') : true; 440 var speed = $carousel.data('speed') ? $carousel.data('speed') : 5000; 441 var responsiveXs = $carousel.data('responsive-xs') ? $carousel.data('responsive-xs') : 1; 442 var responsiveSm = $carousel.data('responsive-sm') ? $carousel.data('responsive-sm') : 2; 443 var responsiveMd = $carousel.data('responsive-md') ? $carousel.data('responsive-md') : 3; 444 var responsiveLg = $carousel.data('responsive-lg') ? $carousel.data('responsive-lg') : 4; 445 var filters = $carousel.data('filters') ? $carousel.data('filters') : false; 446 var navContainer = $carousel.data('nav-container') ? $carousel.data('nav-container') : false; 447 448 if (filters) { 449 $carousel.after($carousel.clone().addClass('owl-carousel-filter-cloned')); 450 jQuery(filters).on('click', 'a', function( e ) { 451 //processing filter link 452 e.preventDefault(); 453 if (jQuery(this).hasClass('selected')) { 454 return; 455 } 456 var filterValue = jQuery( this ).attr('data-filter'); 457 jQuery(this).siblings().removeClass('selected active'); 458 jQuery(this).addClass('selected active'); 459 460 //removing old items 461 $carousel.find('.owl-item').length; 462 for (var i = $carousel.find('.owl-item').length - 1; i >= 0; i--) { 463 $carousel.trigger('remove.owl.carousel', [1]); 464 }; 465 466 //adding new items 467 var $filteredItems = jQuery($carousel.next().find(' > ' +filterValue).clone()); 468 $filteredItems.each(function() { 469 $carousel.trigger('add.owl.carousel', jQuery(this));
470 jQuery(this).addClass('scaleAppear'); 471 }); 472 473 $carousel.trigger('refresh.owl.carousel'); 474 475 //reinit prettyPhoto in filtered OWL carousel 476 if (jQuery().prettyPhoto) { 477 $carousel.find("a[data-gal^='prettyPhoto']").prettyPhoto({ 478 hook: 'data-gal', 479 theme: 'facebook' /* light_rounded / dark_rounded / light_square / dark_square / facebook / pp_default*/ 480 }); 481 } 482 }); 483 484 } //filters 485 486 $carousel.owlCarousel({ 487 loop: loop, 488 margin: margin, 489 nav: nav, 490 autoplay: autoplay, 491 autoplayTimeout: speed, 492 dots: dots, 493 themeClass: themeClass, 494 center: center, 495 items: items, 496 navContainer: navContainer, 497 responsive: { 498 0:{ 499 items: responsiveXs 500 }, 501 767:{ 502 items: responsiveSm 503 }, 504 992:{ 505 items: responsiveMd 506 }, 507 1200:{ 508 items: responsiveLg 509 } 510 }, 511 }) 512 .addClass(themeClass); 513 if(center) { 514 $carousel.addClass('owl-center'); 515 } 516 }); 517 518 } //eof owl-carousel 519 520 //comingsoon counter 521 if (jQuery().countdown) { 522 //today date plus month for demo purpose 523 var demoDate = new Date(); 524 demoDate.setMonth(demoDate.getMonth()+1); 525 jQuery('#comingsoon-countdown').countdown({until: demoDate}); 526 } 527 528 ///////////////////////////////////////////////// 529 //PHP widgets - contact form, search, MailChimp// 530 ///////////////////////////////////////////////// 531 532 //contact form processing 533 jQuery('form.contact-form').on('submit', function( e ){ 534 e.preventDefault(); 535 var $form = jQuery(this); 536 jQuery($form).find('span.contact-form-respond').remove(); 537 538 //checking on empty values 539 jQuery($form).find('[aria-required="true"], [required]').each(function(index) { 540 if (!jQuery(this).val().length) { 541 jQuery(this).addClass('invalid').on('focus', function(){jQuery(this).removeClass('invalid')}); 542 } 543 }); 544 //if one of form fields is empty - exit 545 if ($form.find('[aria-required="true"], [required]').hasClass('invalid')) { 546 return; 547 } 548 549 //sending form data to PHP server if fields are not empty 550 var request = $form.serialize(); 551 var ajax = jQuery.post( "contact-form.php", request ) 552 .done(function( data ) { 553 jQuery($form).find('[type="submit"]').attr('disabled', false).parent().append('<span class="contact-form-respond highlight">'+data+'</span>'); 554 //cleaning form 555 var $formErrors = $form.find('.form-errors'); 556 if ( !$formErrors.length ) { 557 $form[0].reset(); 558 } 559 }) 560 .fail(function( data ) { 561 jQuery($form).find('[type="submit"]').attr('disabled', false).parent().append('<span class="contact-form-respond highlight">Mail cannot be sent. You need PHP server to send mail.</span>'); 562 }) 563 }); 564 565 //search modal 566 jQuery("#search").on('click', function(e){ 567 e.preventDefault(); 568 var $parentNode = jQuery(this).parent(); 569 $parentNode.find('.screen-reader-text').removeClass('screen-reader-text'); 570 $parentNode.find('.theme_button').addClass('color1'); 571 }); 572 //search form processing 573 jQuery('form.searchform, .search-form').on('submit', function( e ){ 574 575 576 var $form = jQuery(this); 577 var $searchModal = jQuery('#search_modal'); 578 $searchModal.find('div.searchform-respond').remove(); 579 580 //checking on empty values 581 jQuery($form).find('[type="text"], [type="search"]').each(function(index) { 582 if (!(jQuery(this).val().trim()).length) { 583 jQuery(this).addClass('invalid').on('focus', function(){jQuery(this).removeClass('invalid')}); 584 } 585 }); 586 //if one of form fields is empty - exit 587 if ($form.find('[type="text"], [type="search"]').hasClass('invalid')) { 588 e.preventDefault(); 589 } 590 591 }); 592 593 //MailChimp subscribe form processing 594 jQuery('.signup').on('submit', function( e ) { 595 e.preventDefault(); 596 var $form = jQuery(this); 597 // update user interface 598 $form.find('.response').html('Adding email address...'); 599 // Prepare query string and send AJAX request 600 jQuery.ajax({ 601 url: 'mailchimp/store-address.php', 602 data: 'ajax=true&email=' + escape($form.find('.mailchimp_email').val()), 603 success: function(msg) { 604 $form.find('.response').html(msg); 605 } 606 }); 607 }); 608 609 //twitter 610 if (jQuery().tweet) {
611 jQuery('.twitter').tweet({ 612 modpath: "./twitter/", 613 count: 2, 614 avatar_size: 48, 615 loading_text: 'loading twitter feed...', 616 join_text: 'auto', 617 username: 'WordPress', 618 template: "{avatar}<div class=\"tweet_right\">{time}{join}<span class=\"tweet_text\">{tweet_text}</span></div>" 619 }); 620 } 621 622 623 //adding CSS classes for elements that needs different styles depending on they widht width 624 //see 'plugins.js' file 625 jQuery('#mainteasers .col-lg-4').addWidthClass({ 626 breakpoints: [500, 600] 627 }); 628 629 630 //background image teaser 631 jQuery(".bg_teaser").each(function(){ 632 var $teaser = jQuery(this); 633 var imagePath = $teaser.find("img").first().attr("src"); 634 if ( imagePath ) { 635 $teaser.css("background-image", "url(" + imagePath + ")"); 636 } 637 if (!$teaser.find('.bg_overlay').length) { 638 $teaser.prepend('<div class="bg_overlay"/>'); 639 } 640 }); 641 642 // init timetable 643 var $timetable = jQuery('#timetable'); 644 if ($timetable.length) { 645 // bind filter click 646 jQuery('#timetable_filter').on( 'click', 'a', function( e ) { 647 e.preventDefault(); 648 e.stopPropagation(); 649 if ( jQuery(this).hasClass('selected') ) { 650 // return false; 651 return; 652 } 653 var selector = jQuery(this).attr('data-filter'); 654 $timetable.find('tbody td').removeClass('current').end().find(selector).closest('td').addClass('current'); 655 jQuery( this ).closest('ul').find('a').removeClass('selected'); 656 jQuery( this ).addClass('selected'); 657 }); 658 } 659 660 //wp-postrating plugin 661 if (typeof(rate_post_success) === 'function') { 662 jQuery('.post-ratings').find('img').after('<span/>'); 663 //override default function - to add span on success rating set 664 window.rate_post_success = function (data) { 665 jQuery('#post-ratings-' + post_id).html(data); 666 if(ratingsL10n.show_loading) { 667 jQuery('#post-ratings-' + post_id + '-loading').hide(); 668 } 669 if(ratingsL10n.show_fading) { 670 jQuery('#post-ratings-' + post_id).fadeTo('def', 1, function () { 671 set_is_being_rated(false); 672 }); 673 } else { 674 set_is_being_rated(false); 675 } 676 jQuery('.post-ratings').find('img').after('<span/>'); 677 } 678 } 679}//eof documentReadyInit 680 681//function that initiating template plugins on window.load event 682function windowLoadInit() { 683 //chart 684 pieChart(); 685 686 //flexslider 687 if (jQuery().flexslider) { 688 var $introSlider = jQuery(".intro_section .flexslider"); 689 $introSlider.each(function(index){ 690 var $currentSlider = jQuery(this); 691 $currentSlider.flexslider({ 692 animation: "fade", 693 pauseOnHover: true, 694 useCSS: true, 695 controlNav: true, 696 directionNav: true, 697 prevText: ">", 698 nextText: "<", 699 smoothHeight: false, 700 slideshowSpeed: $currentSlider.data('slideshowspeed') ? $currentSlider.data('slideshowspeed') : 5000, 701 animationSpeed: 600, 702 start: function( slider ) { 703 if (window.screen.width > 992) { 704 slider.find('.slide_description').children().css({'visibility': 'hidden'}); 705 slider.find('.flex-active-slide .slide_description').children().each(function(index){ 706 var self = jQuery(this); 707 var animationClass = !self.data('animation') ? 'fadeInRight' : self.data('animation'); 708 setTimeout(function(){ 709 self.addClass("animated "+animationClass); 710 }, index*200); 711 }); 712 slider.find('.flex-control-nav').find('a').each(function() { 713 jQuery( this ).html('0' + jQuery( this ).html()); 714 }); 715 } else { 716 for (let index = 0; index < slider.slides.length; index++) { 717 jQuery(slider.slides[index]).find('img').css('display', 'none'); 718 jQuery(slider.slides[index]).css({ 719 'background-image': 'url("' + jQuery(slider.slides[index]).find('img').attr('src') + '"', 720 'background-size': 'cover' 721 }); 722 } 723 } 724 }, 725 after :function( slider ){ 726 slider.find('.flex-active-slide .slide_description').children().each(function(index){ 727 var self = jQuery(this); 728 var animationClass = !self.data('animation') ? 'fadeInRight' : self.data('animation'); 729 setTimeout(function(){ 730 self.addClass("animated "+animationClass); 731 }, index*200); 732 });
733 }, 734 end :function( slider ){ 735 slider.find('.slide_description').children().each(function() { 736 var self = jQuery(this); 737 var animationClass = !self.data('animation') ? 'fadeInRight' : self.data('animation'); 738 self.removeClass('animated ' + animationClass).css({'visibility': 'hidden'}); 739 // jQuery(this).attr('class', ''); 740 }); 741 }, 742 743 }) 744 //wrapping nav with container 745 .find('.flex-control-nav') 746 .wrap('<div class="container nav-container"/>') 747 }); //intro_section flex slider 748 749 jQuery(".flexslider").each(function(index){ 750 var $currentSlider = jQuery(this); 751 //exit if intro slider already activated 752 if ($currentSlider.find('.flex-active-slide').length) { 753 return; 754 } 755 $currentSlider.flexslider({ 756 animation: "fade", 757 useCSS: true, 758 controlNav: true, 759 directionNav: false, 760 prevText: ">", 761 nextText: "<", 762 smoothHeight: false, 763 slideshowSpeed:5000, 764 animationSpeed:800, 765 }) 766 }); 767 } 768 769 //////////////////// 770 //header processing/ 771 //////////////////// 772 //stick header to top 773 //wrap header with div for smooth sticking 774 var $header = jQuery('.page_header').first(); 775 if ($header.length) { 776 //hiding main menu 1st levele elements that do not fit width 777 menuHideExtraElements(); 778 //mega menu 779 initMegaMenu(); 780 var headerHeight = $header.outerHeight(); 781 $header.wrap('<div class="page_header_wrapper"></div>').parent().css({height: headerHeight}); //wrap header for smooth stick and unstick 782 var $headerWrapper = $header.parent(); 783 784 //get offset 785 var headerOffset = 0; 786 //check for sticked template headers 787 headerOffset = $header.offset().top; 788 789 //for boxed layout - show or hide main menu elements if width has been changed on affix 790 jQuery($header).on('affixed-top.bs.affix affixed.bs.affix affixed-bottom.bs.affix', function ( e ) { 791 if( $header.hasClass('affix-top') ) { 792 $header.parent().removeClass('affix-wrapper affix-bottom-wrapper').addClass('affix-top-wrapper'); 793 } else if ( $header.hasClass('affix') ) { 794 $header.parent().removeClass('affix-top-wrapper affix-bottom-wrapper').addClass('affix-wrapper'); 795 } else if ( $header.hasClass('affix-bottom') ) { 796 $header.parent().removeClass('affix-wrapper affix-top-wrapper').addClass('affix-bottom-wrapper'); 797 } else { 798 $header.parent().removeClass('affix-wrapper affix-top-wrapper affix-bottom-wrapper'); 799 } 800 menuHideExtraElements(); 801 initMegaMenu(); 802 }); 803 804 //if header has different height on afixed and affixed-top positions - correcting wrapper height 805 jQuery($header).on('affixed-top.bs.affix', function () { 806 $header.parent().css({height: headerHeight}); 807 }); 808 809 jQuery($header).affix({ 810 offset: { 811 top: headerOffset, 812 bottom: 0 813 } 814 }); 815 } 816 817 //aside affix 818 affixSidebarInit(); 819 820 jQuery('body').scrollspy('refresh'); 821 822 //animation to elements on scroll 823 if (jQuery().appear) { 824 jQuery('.to_animate').appear(); 825 jQuery('.to_animate').filter(':appeared').each(function(index){ 826 var self = jQuery(this); 827 var animationClass = !self.data('animation') ? 'fadeInUp' : self.data('animation'); 828 var animationDelay = !self.data('delay') ? 210 : self.data('delay'); 829 setTimeout(function(){ 830 self.addClass("animated " + animationClass); 831 }, index * animationDelay); 832 }); 833 834 jQuery('body').on('appear', '.to_animate', function(e, $affected ) { 835 jQuery($affected).each(function(index){ 836 var self = jQuery(this); 837 var animationClass = !self.data('animation') ? 'fadeInUp' : self.data('animation'); 838 var animationDelay = !self.data('delay') ? 210 : self.data('delay'); 839 setTimeout(function(){ 840 self.addClass("animated " + animationClass); 841 }, index * animationDelay); 842 }); 843 }); 844 845 //counters init on scroll 846 jQuery('.counter').appear(); 847 jQuery('.counter').filter(':appeared').each(function(index){ 848 if (jQuery(this).hasClass('counted')) { 849 return; 850 } else { 851 jQuery(this).countTo().addClass('counted'); 852 } 853 }); 854 jQuery('body').on('appear', '.counter', function(e, $affected ) { 855 jQuery($affected).each(function(index){ 856 if (jQuery(this).hasClass('counted')) { 857 return; 858 } else { 859 jQuery(this).countTo().addClass('counted'); 860 } 861 862 }); 863 }); 864 865 //bootstrap animated progressbar 866 if (jQuery().progressbar) { 867 jQuery('.progress .progress-bar').appear(); 868 jQuery('.progress .progress-bar').filter(':appeared').each(function(index){ 869 jQuery(this).progressbar({ 870 transition_delay: 300 871 }); 872 }); 873 jQuery('body').on('appear', '.progress .progress-bar', function(e, $affected ) { 874 jQuery($affected).each(function(index){ 875 jQuery(this).progressbar({ 876 transition_delay: 300 877 });
878 }); 879 }); 880 //animate progress bar inside bootstrap tab 881 jQuery('a[data-toggle="tab"]').on('shown.bs.tab', function(e) { 882 jQuery(jQuery(e.target).attr('href')).find('.progress .progress-bar').progressbar({ 883 transition_delay: 300 884 }); 885 }); 886 } 887 } //appear check 888 889 //flickr 890 // use http://idgettr.com/ to find your ID 891 if (jQuery().jflickrfeed) { 892 var $flickr = jQuery("#flickr, .flickr_ul"); 893 if ( $flickr.length ) { 894 $flickr.each(function () { 895 var $thisFlickrUl = jQuery(this); 896 if ( ! ( jQuery(this).hasClass('flickr_loaded') ) ) { 897 var id = $thisFlickrUl.data('flickr-id') ? $thisFlickrUl.data('flickr-id') : 8; 898 var limit = $thisFlickrUl.data('flickr-number') ? $thisFlickrUl.data('flickr-number') : '131791558@N04'; 899 $thisFlickrUl.jflickrfeed({ 900 flickrbase: "http://api.flickr.com/services/feeds/", 901 limit: limit, 902 qstrings: { 903 id: id 904 }, 905 itemTemplate: '<a href="{{image_b}}" data-gal="prettyPhoto[pp_gal]"><li><img alt="{{title}}" src="{{image_s}}" /></li></a>' 906 }, function(data) { 907 $thisFlickrUl.find('a').prettyPhoto({ 908 hook: 'data-gal', 909 theme: 'facebook' 910 }); 911 }).addClass('flickr_loaded'); 912 } 913 914 }) 915 916 } 917 } 918 919 //video images preview 920 jQuery('.embed-placeholder').each(function(){ 921 jQuery(this).on('click', function(e) { 922 e.preventDefault(); 923 var $thisLink = jQuery(this); 924 if ($thisLink.attr('href') == '' || $thisLink.attr('href') == '#') { 925 $thisLink.replaceWith($thisLink.data('iframe').replace(/&/g, '&').replace(/$lt;/g, '<').replace(/>/g, '>').replace(/$quot;/g, '"')).trigger('click'); 926 } else { 927 $thisLink.replaceWith('<iframe class="embed-responsive-item" src="'+ $thisLink.attr('href') + '?rel=0&autoplay=1'+ '"></iframe>'); 928 } 929 }); 930 }); 931 932 // init Isotope 933 jQuery('.isotope_container').each(function(index) { 934 var $container = jQuery(this); 935 var layoutMode = ($container.hasClass('masonry-layout')) ? 'masonry' : 'fitRows'; 936 $container.isotope({ 937 percentPosition: true, 938 layoutMode: layoutMode, 939 masonry: {} 940 }); 941 942 var $filters = jQuery(this).attr('data-filters') ? jQuery(jQuery(this).attr('data-filters')) : $container.prev().find('.filters'); 943 // bind filter click 944 if ($filters.length) { 945 $filters.on( 'click', 'a', function( e ) { 946 e.preventDefault(); 947 var filterValue = jQuery( this ).attr('data-filter'); 948 $container.isotope({ filter: filterValue }); 949 jQuery(this).siblings().removeClass('selected active'); 950 jQuery(this).addClass('selected active'); 951 }); 952 } 953 }); 954 955 //Unyson or other messages modal 956 var $messagesModal = jQuery('#messages_modal'); 957 if ($messagesModal.find('ul').length) { 958 $messagesModal.modal('show'); 959 } 960 961 //page preloader 962 jQuery(".preloaderimg").fadeOut(); 963 jQuery(".preloader").delay(200).fadeOut("slow").delay(200, function(){ 964 jQuery(this).remove(); 965 }); 966}//eof windowLoadInit 967 968jQuery(document).ready( function() { 969 documentReadyInit(); 970}); //end of "document ready" event 971 972 973jQuery(window).on('load', function(){ 974 windowLoadInit(); 975}); //end of "window load" event 976 977jQuery(window).on('resize', function(){ 978 979 jQuery('body').scrollspy('refresh'); 980 981 //header processing 982 menuHideExtraElements(); 983 initMegaMenu(); 984 var $header = jQuery('.page_header').first(); 985 //checking document scrolling position 986 if ($header.length && !jQuery(document).scrollTop() && $header.first().data('bs.affix')) { 987 $header.first().data('bs.affix').options.offset.top = $header.offset().top; 988 } 989 jQuery(".page_header_wrapper").css({height: $header.first().outerHeight()}); //editing header wrapper height for smooth stick and unstick 990 991}); 992 993//wrap forms select field corretcion (disable first choise) 994jQuery('.wrap-forms').find('select option:first-of-type').attr("disabled", "disabled").addClass('default-selected'); 995 996jQuery(window).scroll(function() { 997 //circle progress bar 998 pieChart(); 999}); 1000 1001//Replace search widget placeholder 1002jQuery('.search-form').find('.search-field').attr("placeholder", "Search Keyword"); 1003jQuery('.page_topline').find('.search-field').attr("placeholder", "Search..."); 1004 1005//Breadcrumbs title (wrap last word in span) 1006jQuery('.breadcrumbs-title').html(function() { 1007 // separate the text by spaces 1008 var text= jQuery(this).text().split(' '); 1009 // drop the last word and store it in a variable 1010 var last = text.pop();
1011 // join the text back and if it has more than 1 word add the span tag 1012 // to the last word 1013 return text.join(" ") + (text.length > 1 ? ' <span class="last-word">'+last+'</span>' : last); 1014}); 1015 1016//Appointment monthname (wrap last word in span) 1017jQuery('.monthName').html(function() { 1018 // separate the text by spaces 1019 var text= jQuery(this).text().split(' '); 1020 // drop the last word and store it in a variable 1021 var last = text.pop(); 1022 // join the text back and if it has more than 1 word add the span tag 1023 // to the last word 1024 return text.join(" ") + (text.length > 0 ? ' <span class="last-word">'+last+'</span>' : last); 1025}); 1026 1027//Author meta name(wrap last word in span) 1028jQuery('.author-meta .author-name').html(function() { 1029 // separate the text by spaces 1030 var text= jQuery(this).text().split(' '); 1031 // drop the last word and store it in a variable 1032 var last = text.pop(); 1033 // join the text back and if it has more than 1 word add the span tag 1034 // to the last word 1035 return text.join(" ") + (text.length > 0 ? ' <span class="last-word">'+last+'</span>' : last); 1036}); 1037 1038//Comment author name(wrap last word in span) 1039jQuery('.author_url .fn').html(function() { 1040 // separate the text by spaces 1041 var text= jQuery(this).text().split(' '); 1042 // drop the last word and store it in a variable 1043 var last = text.pop(); 1044 // join the text back and if it has more than 1 word add the span tag 1045 // to the last word 1046 return text.join(" ") + (text.length > 0 ? ' <span class="last-word">'+last+'</span>' : last); 1047}); 1048 1049//add child element to footer widget title 1050jQuery('body').find('.widget-title').append( '<span class="after_title"></span>' );
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.