1// Document ready actions for shortcodes 2jQuery(document).ready(function(){ 3 "use strict"; 4 setTimeout(function() { 5 dentario_sc_animation(); 6 }, 600); 7}); 8 9 10// Resize actions 11jQuery(window).resize(function(){ 12 "use strict"; 13 dentario_sc_sliders_resize(); 14}); 15 16 17// Animation 18function dentario_sc_animation() { 19 jQuery('[data-animation^="animated"]:not(.animated)').each(function() { 20 "use strict"; 21 if (jQuery(this).offset().top < jQuery(window).scrollTop() + jQuery(window).height()) 22 jQuery(this).addClass(jQuery(this).data('animation')); 23 }); 24} 25 26 27// Shortcodes init 28function dentario_sc_init(container) { 29 "use strict"; 30 31 // Accordion 32 if (container.find('.sc_accordion:not(.inited)').length > 0) { 33 container.find(".sc_accordion:not(.inited)").each(function () { 34 "use strict"; 35 var init = jQuery(this).data('active'); 36 if (isNaN(init)) init = 0; 37 else init = Math.max(0, init); 38 jQuery(this) 39 .addClass('inited') 40 .accordion({ 41 active: init, 42 heightStyle: "content", 43 header: "> .sc_accordion_item > .sc_accordion_title", 44 create: function (event, ui) { 45 "use strict"; 46 dentario_init_shortcodes(ui.panel); 47 if (window.dentario_init_hidden_elements) dentario_init_hidden_elements(ui.panel); 48 ui.header.each(function () { 49 "use strict"; 50 jQuery(this).parent().addClass('sc_active'); 51 }); 52 }, 53 activate: function (event, ui) { 54 "use strict"; 55 dentario_init_shortcodes(ui.newPanel); 56 if (window.dentario_init_hidden_elements) dentario_init_hidden_elements(ui.newPanel); 57 ui.newHeader.each(function () { 58 "use strict"; 59 jQuery(this).parent().addClass('sc_active'); 60 }); 61 ui.oldHeader.each(function () { 62 "use strict"; 63 jQuery(this).parent().removeClass('sc_active'); 64 }); 65 } 66 }); 67 }); 68 } 69 70 // Blogger: style Polaroid 71 if (container.find('.sc_blogger.layout_polaroid .photostack:not(.inited)').length > 0) { 72 container.find(".sc_blogger.layout_polaroid .photostack:not(.inited)").each(function () { 73 "use strict"; 74 var obj = jQuery(this); 75 var id = obj.attr('id'); 76 if (id == undefined) { 77 id = 'photostack_'+Math.random(); 78 id = id.replace('.', ''); 79 obj.attr('id', id); 80 } 81 setTimeout(function() { 82 "use strict"; 83 obj.addClass('inited').parent().height("auto"); 84 new Photostack( obj.get(0), { 85 callback: function( item ) { 86 } 87 } ); 88 }, 10); 89 }); 90 } 91 92 // Blogger: Scroll horizontal 93 if (container.find('.sc_blogger .sc_scroll_horizontal .sc_scroll_wrapper:not(.inited)').length > 0) { 94 container.find(".sc_blogger .sc_scroll_horizontal .sc_scroll_wrapper:not(.inited)").each(function () { 95 "use strict"; 96 var obj = jQuery(this); 97 var width = 0; 98 obj.find('.isotope_item').each(function(){ 99 "use strict"; 100 width += jQuery(this).outerWidth(); 101 }); 102 obj.addClass('inited').width(width); 103 }); 104 } 105 106 // Form 107 if (container.find('.sc_form form:not(.inited)').length > 0) { 108 container.find(".sc_form form:not(.inited)").each(function() { 109 "use strict"; 110 jQuery(this).addClass('inited'); 111 jQuery(this).submit(function(e) { 112 "use strict"; 113 dentario_sc_form_validate(jQuery(this)); 114 e.preventDefault(); 115 return false; 116 }); 117 if (jQuery(this).find('.js__datepicker').length > 0) { 118 jQuery(this).find('.js__datepicker').pickadate({ 119 // Work-around for some mobile browsers clipping off the picker. 120 onOpen: function() { 121 "use strict"; 122 jQuery('pre').css('overflow', 'hidden'); 123 }, 124 onClose: function() { 125 "use strict"; 126 jQuery('pre').css('overflow', ''); 127 }, 128 monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec' ], 129 showMonthsShort: true, 130 format: 'dd.mm.yyyy', 131 formatSubmit: 'yyyy-mm-dd', 132 min: true 133 }); 134 } 135 if (jQuery(this).find('.js__timepicker').length > 0) { 136 jQuery(this).find('.js__timepicker').pickatime(); 137 } 138 }); 139 } 140 141 //Countdown 142 if (container.find('.sc_countdown:not(.inited)').length > 0) { 143 container.find('.sc_countdown:not(.inited)') 144 .each(function () { 145 "use strict"; 146 jQuery(this).addClass('inited'); 147 var id = jQuery(this).attr('id'); 148 var curDate = new Date(); 149 var curDateTimeStr = curDate.getFullYear()+'-'+(curDate.getMonth()<9 ? '0' : '')+(curDate.getMonth()+1)+'-'+(curDate.getDate()<10 ? '0' : '')+curDate.getDate() 150 +' '+(curDate.getHours()<10 ? '0' : '')+curDate.getHours()+':'+(curDate.getMinutes()<10 ? '0' : '')+curDate.getMinutes()+':'+(curDate.getSeconds()<10 ? '0' : '')+curDate.getSeconds(); 151 var interval = 1; //jQuery(this).data('interval'); 152 var endDateStr = jQuery(this).data('date'); 153 var endDateParts = endDateStr.split('-'); 154 var endTimeStr = jQuery(this).data('time'); 155 var endTimeParts = endTimeStr.split(':'); 156 if (endTimeParts.length < 3) endTimeParts[2] = '00'; 157 var endDateTimeStr = endDateStr+' '+endTimeStr; 158 if (curDateTimeStr < endDateTimeStr) { 159 jQuery(this).find('.sc_countdown_placeholder').countdown({ 160 until: new Date(endDateParts[0], endDateParts[1]-1, endDateParts[2], endTimeParts[0], endTimeParts[1], endTimeParts[2]), 161 tickInterval: interval, 162 onTick: dentario_countdown 163 }); 164 } else { 165 jQuery(this).find('.sc_countdown_placeholder').countdown({ 166 since: new Date(endDateParts[0], endDateParts[1]-1, endDateParts[2], endTimeParts[0], endTimeParts[1], endTimeParts[2]), 167 tickInterval: interval, 168 onTick: dentario_countdown 169 }); 170 } 171 }); 172 } 173 174 // Emailer form 175 if (container.find('.sc_emailer:not(.inited)').length > 0) { 176 container.find(".sc_emailer:not(.inited)") 177 .addClass('inited') 178 .on('click', '.sc_emailer_button', function(e) { 179 "use strict"; 180 var form = jQuery(this).parents('form'); 181 var parent = jQuery(this).parents('.sc_emailer'); 182 if (parent.hasClass('sc_emailer_opened')) { 183 if (form.length>0 && form.find('input').val()!='') { 184 var group = jQuery(this).data('group'); 185 var email = form.find('input').val(); 186 var regexp = new RegExp(DENTARIO_STORAGE['email_mask']); 187 if (!regexp.test(email)) { 188 form.find('input').get(0).focus(); 189 dentario_message_warning(DENTARIO_STORAGE['strings']['email_not_val
189id']); 190 } else { 191 jQuery.post(DENTARIO_STORAGE['ajax_url'], { 192 action: 'emailer_submit', 193 nonce: DENTARIO_STORAGE['ajax_nonce'], 194 group: group, 195 email: email 196 }).done(function(response) { 197 "use strict"; 198 var rez = {}; 199 try { 200 rez = JSON.parse(response); 201 } catch (e) { 202 rez = { error: DENTARIO_STORAGE['ajax_error'] }; 203 console.log(response); 204 } 205 if (rez.error === '') { 206 dentario_message_info(DENTARIO_STORAGE['strings']['email_confirm'].replace('%s', email)); 207 form.find('input').val(''); 208 } else { 209 dentario_message_warning(rez.error); 210 } 211 }); 212 } 213 } else 214 form.get(0).submit(); 215 } else { 216 parent.addClass('sc_emailer_opened'); 217 } 218 e.preventDefault(); 219 return false; 220 }); 221 } 222 223 // Googlemap init 224 if (container.find('.sc_googlemap:not(.inited)').length > 0) { 225 container.find('.sc_googlemap:not(.inited)') 226 .each(function () { 227 "use strict"; 228 if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return; 229 var map = jQuery(this).addClass('inited'); 230 var map_id = map.attr('id'); 231 var map_zoom = map.data('zoom'); 232 var map_style = map.data('style'); 233 var map_markers = []; 234 map.find('.sc_googlemap_marker').each(function() { 235 "use strict"; 236 var marker = jQuery(this); 237 map_markers.push({ 238 point: marker.data('point'), 239 address: marker.data('address'), 240 latlng: marker.data('latlng'), 241 description: marker.data('description'), 242 title: marker.data('title') 243 }); 244 }); 245 dentario_googlemap_init( jQuery('#'+map_id).get(0), {style: map_style, zoom: map_zoom, markers: map_markers}); 246 }); 247 } 248 249 // Infoboxes 250 if (container.find('.sc_infobox.sc_infobox_closeable:not(.inited)').length > 0) { 251 container.find('.sc_infobox.sc_infobox_closeable:not(.inited)') 252 .addClass('inited') 253 .on('click', function () { 254 "use strict"; 255 jQuery(this).slideUp(); 256 }); 257 } 258 259 // Popup links 260 if (container.find('.sc_popup_link:not(.inited)').length > 0) { 261 container.find('.sc_popup_link:not(.inited)').each(function() { 262 "use strict"; 263 var popup_id = jQuery(this).attr('href'); 264 jQuery(this) 265 .addClass('inited') 266 .magnificPopup({ 267 type: 'inline', 268 removalDelay: 500, 269 midClick: true, 270 callbacks: { 271 beforeOpen: function () { 272 this.st.mainClass = 'mfp-zoom-in'; 273 }, 274 open: function() { 275 "use strict"; 276 dentario_init_shortcodes(jQuery(popup_id)); 277 if (window.dentario_init_hidden_elements) dentario_init_hidden_elements(jQuery(popup_id)); 278 }, 279 close: function() {} 280 } 281 }); 282 }); 283 } 284 285 // Recent news widget and sc 286 if (container.find('.sc_recent_news_header_category_item_more:not(.inited)').length > 0) { 287 container.find('.sc_recent_news_header_category_item_more:not(.inited)').each(function() { 288 "use strict"; 289 jQuery(this) 290 .addClass('inited') 291 .on('click', function(e) { 292 "use strict"; 293 jQuery(this).toggleClass('opened').find('.sc_recent_news_header_more_categories').slideToggle(); 294 e.preventDefault(); 295 return false; 296 }); 297 }); 298 } 299 300 // Search form 301 if (container.find('.search_wrap:not(.inited)').length > 0) { 302 container.find('.search_wrap:not(.inited)').each(function() { 303 "use strict"; 304 jQuery(this) 305 .addClass('inited') 306 .on('click', '.search_submit', function(e) { 307 "use strict"; 308 var search_wrap = jQuery(this).parents('.search_wrap'); 309 if (!search_wrap.hasClass('search_state_fixed')) { 310 if (search_wrap.hasClass('search_state_opened')) { 311 if (search_wrap.find('.search_field').val() != '') 312 search_wrap.find('form').get(0).submit(); 313 else 314 search_wrap.removeClass('search_state_opened').addClass('search_state_closed').find('.search_results').fadeOut(); 315 } else 316 search_wrap.removeClass('search_state_closed').addClass('search_state_opened').find('.search_field').get(0).focus(); 317 } else { 318 if (search_wrap.find('.search_field').val() != '') 319 search_wrap.find('form').get(0).submit(); 320 else { 321 search_wrap.find('.search_field').val(''); 322 search_wrap.find('.search_results').fadeOut(); 323 } 324 } 325 e.preventDefault(); 326 return false;
327 }) 328 .on('click', '.search_results_close', function(e) { 329 "use strict"; 330 jQuery(this).parent().fadeOut(); 331 e.preventDefault(); 332 return false; 333 }) 334 .on('click', '.search_more', function(e) { 335 "use strict"; 336 if (jQuery(this).parents('.search_wrap').find('.search_field').val() != '') 337 jQuery(this).parents('.search_wrap').find('form').get(0).submit(); 338 e.preventDefault(); 339 return false; 340 }); 341 if (jQuery(this).hasClass('search_ajax')) { 342 var ajax_timer = null; 343 jQuery(this).find('.search_field').keyup(function(e) { 344 "use strict"; 345 var search_field = jQuery(this); 346 var s = search_field.val(); 347 if (ajax_timer) { 348 clearTimeout(ajax_timer); 349 ajax_timer = null; 350 } 351 if (s.length >= DENTARIO_STORAGE['ajax_search_min_length']) { 352 ajax_timer = setTimeout(function() { 353 "use strict"; 354 jQuery.post(DENTARIO_STORAGE['ajax_url'], { 355 action: 'ajax_search', 356 nonce: DENTARIO_STORAGE['ajax_nonce'], 357 text: s 358 }).done(function(response) { 359 "use strict"; 360 clearTimeout(ajax_timer); 361 ajax_timer = null; 362 var rez = {}; 363 try { 364 rez = JSON.parse(response); 365 } catch (e) { 366 rez = { error: DENTARIO_STORAGE['ajax_error'] }; 367 console.log(response); 368 } 369 if (rez.error === '') { 370 search_field.parents('.search_ajax').find('.search_results_content').empty().append(rez.data); 371 search_field.parents('.search_ajax').find('.search_results').fadeIn(); 372 } else { 373 dentario_message_warning(DENTARIO_STORAGE['strings']['search_error']); 374 } 375 }); 376 }, DENTARIO_STORAGE['ajax_search_delay']); 377 } 378 }); 379 } 380 }); 381 } 382 383 384 // Section Pan init 385 if (container.find('.sc_pan:not(.inited_pan)').length > 0) { 386 container.find('.sc_pan:not(.inited_pan)') 387 .each(function () { 388 "use strict"; 389 if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return; 390 var pan = jQuery(this).addClass('inited_pan'); 391 var cont = pan.parent(); 392 cont.mousemove(function(e) { 393 "use strict"; 394 var anim = {}; 395 var tm = 0; 396 var pw = pan.width(), ph = pan.height(); 397 var cw = cont.width(), ch = cont.height(); 398 var coff = cont.offset(); 399 if (pan.hasClass('sc_pan_vertical')) 400 pan.css('top', -Math.floor((e.pageY - coff.top) / ch * (ph-ch))); 401 if (pan.hasClass('sc_pan_horizontal')) 402 pan.css('left', -Math.floor((e.pageX - coff.left) / cw * (pw-cw))); 403 }); 404 cont.mouseout(function(e) { 405 "use strict"; 406 pan.css({'left': 0, 'top': 0}); 407 }); 408 }); 409 } 410 411 // Scroll 412 if (container.find('.sc_scroll:not(.inited)').length > 0) { 413 container.find('.sc_scroll:not(.inited)') 414 .each(function () { 415 "use strict"; 416 if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return; 417 DENTARIO_STORAGE['scroll_init_counter'] = 0; 418 dentario_sc_init_scroll_area(jQuery(this)); 419 }); 420 } 421 422 423 // Swiper Slider 424 if (container.find('.sc_slider_swiper:not(.inited)').length > 0) { 425 container.find('.sc_slider_swiper:not(.inited)') 426 .each(function () { 427 "use strict"; 428 if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return; 429 //if (jQuery(this).parents('.isotope_wrap:not(.inited)').length > 0) return; 430 jQuery(this).addClass('inited'); 431 dentario_sc_slider_autoheight(jQuery(this)); 432 if (jQuery(this).parents('.sc_slider_pagination_area').length > 0) { 433 jQuery(this).parents('.sc_slider_pagination_area').find('.sc_slider_pagination .post_item').eq(0).addClass('active'); 434 } 435 var id = jQuery(this).attr('id'); 436 if (id == undefined) { 437 id = 'swiper_'+Math.random(); 438 id = id.replace('.', ''); 439 jQuery(this).attr('id', id); 440 } 441 jQuery(this).addClass(id); 442 jQuery(this).find('.slides .swiper-slide').css('position', 'relative'); 443 var width = jQuery(this).width(); 444 if (width == 0) width = jQuery(this).parent().width(); 445 var spv = jQuery(this).data('slides-per-view'); 446 if (spv == undefined) spv = 1; 447 var min_width = jQuery(this).data('slides-min-width');
448 if (min_width == undefined) min_width = 50; 449 if (width / spv < min_width) spv = Math.max(1, Math.floor(width / min_width)); 450 var space = jQuery(this).data('slides-space'); 451 if (space == undefined) space = 0; 452 if (DENTARIO_STORAGE['swipers'] === undefined) DENTARIO_STORAGE['swipers'] = {}; 453 DENTARIO_STORAGE['swipers'][id] = new Swiper('.'+id, { 454 calculateHeight: !jQuery(this).hasClass('sc_slider_height_fixed'), 455 resizeReInit: true, 456 autoResize: true, 457 loop: true, 458 grabCursor: true, 459 nextButton: jQuery(this).hasClass('sc_slider_controls') ? '#'+id+' .sc_slider_next' : false, 460 prevButton: jQuery(this).hasClass('sc_slider_controls') ? '#'+id+' .sc_slider_prev' : false, 461 pagination: jQuery(this).hasClass('sc_slider_pagination') ? '#'+id+' .sc_slider_pagination_wrap' : false, 462 paginationClickable: true, 463 autoplay: jQuery(this).hasClass('sc_slider_noautoplay') ? false : (isNaN(jQuery(this).data('interval')) ? 7000 : jQuery(this).data('interval')), 464 autoplayDisableOnInteraction: false, 465 initialSlide: 0, 466 slidesPerView: spv, 467 loopedSlides: spv, 468 spaceBetween: space, 469 speed: 600, 470 // Autoheight on start 471 onFirstInit: function (slider){ 472 "use strict"; 473 var cont = jQuery(slider.container); 474 if (!cont.hasClass('sc_slider_height_auto')) return; 475 var li = cont.find('.swiper-slide').eq(1); 476 var h = li.data('height_auto'); 477 if (h > 0) { 478 var pt = parseInt(li.css('paddingTop')), pb = parseInt(li.css('paddingBottom')); 479 li.height(h); 480 cont.height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb)); 481 cont.find('.swiper-wrapper').height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb)); 482 } 483 }, 484 // Autoheight on slide change 485 onSlideChangeStart: function (slider){ 486 "use strict"; 487 var cont = jQuery(slider.container); 488 if (!cont.hasClass('sc_slider_height_auto')) return; 489 var idx = slider.activeIndex; 490 var li = cont.find('.swiper-slide').eq(idx); 491 var h = li.data('height_auto'); 492 if (h > 0) { 493 var pt = parseInt(li.css('paddingTop')), pb = parseInt(li.css('paddingBottom')); 494 li.height(h); 495 cont.height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb)); 496 cont.find('.swiper-wrapper').height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb)); 497 } 498 }, 499 // Change current item in 'full' or 'over' pagination wrap 500 onSlideChangeEnd: function (slider, dir) { 501 "use strict"; 502 var cont = jQuery(slider.container); 503 if (cont.parents('.sc_slider_pagination_area').length > 0) { 504 var li = cont.parents('.sc_slider_pagination_area').find('.sc_slider_pagination .post_item'); 505 var idx = slider.activeIndex > li.length ? 0 : slider.activeIndex-1; 506 dentario_sc_change_active_pagination_in_slider(cont, idx); 507 } 508 } 509 }); 510 511 jQuery(this).data('settings', {mode: 'horizontal'}); // VC hook 512 513 var curSlide = jQuery(this).find('.slides').data('current-slide'); 514 if (curSlide > 0) 515 DENTARIO_STORAGE['swipers'][id].slideTo(curSlide-1); 516 517 dentario_sc_prepare_slider_navi(jQuery(this)); 518 519 }); 520 521 // Check slides per view 522 dentario_sc_sliders_resize(); 523 } 524 525 //Skills init 526 if (container.find('.sc_skills_item:not(.inited)').length > 0) { 527 dentario_sc_init_skills(container); 528 jQuery(window).scroll(function () { dentario_sc_init_skills(container); }); 529 } 530 //Skills type='arc' init 531 if (container.find('.sc_skills_arc:not(.inited)').length > 0) { 532 dentario_sc_init_skills_arc(container); 533 jQuery(window).scroll(function () { dentario_sc_init_skills_arc(container); }); 534 } 535 536 // Tabs 537 if (container.find('.sc_tabs:not(.inited):not(.no_jquery_ui),.tabs_area:not(.inited)').length > 0) { 538 container.find('.sc_tabs:not(.inited):not(.no_jquery_ui),.tabs_area:not(.inited)').each(function () { 539 "use strict"; 540 var init = jQuery(this).data('active'); 541 if (isNaN(init)) init = 0; 542 else init = Math.max(0, init); 543 jQuery(this) 544 .addClass('inited') 545 .tabs({ 546 active: init, 547 show: { 548 effect: 'fadeIn', 549 duration: 300 550 }, 551 hide: { 552 effect: 'fadeOut', 553 duration: 300 554 }, 555 create: function (event, ui) { 556 "use strict"; 557 dentario_init_shortcodes(ui.panel); 558 if (window.dentario_init_hidden_elements) dentario_init_hidden_elements(ui.panel); 559 }, 560 activate: function (event, ui) { 561 "use strict"; 562 dentario_init_shortcodes(ui.newPanel); 563 if (window.dentario_init_hidden_elements) dentario_init_hidden_elements(ui.newPanel); 564 } 565 }); 566 }); 567 } 568 if (container.find('.sc_tabs.no_jquery_ui:not(.inited)').length > 0) { 569 container.find('.sc_tabs.no_jquery_ui:not(.inited)').each(function () { 570 "use strict"; 571 jQuery(this) 572 .addClass('inited') 573 .on('click', '.sc_tabs_titles li a', function(e) { 574 "use strict"; 575 if (!jQuery(this).parent().hasClass('sc_tabs_active')) { 576 var id_act = jQuery(this).parent().siblings('.sc_tabs_active').find('a').attr('href'); 577 var id = jQuery(this).attr('href'); 578 jQuery(this).parent().addClass('sc_tabs_active').siblings().removeClass('sc_tabs_active'); 579 jQuery(id_act).fadeOut(function() { 580 "use strict"; 581 jQuery(id).fadeIn(function() { 582 "use strict"; 583 dentario_init_shortcodes(jQuery(this)); 584 if (window.dentario_init_hidden_elements) dentario_init_hidden_elements(jQuery(this)); 585 }); 586 }); 587 } 588 e.preventDefault(); 589 return false;
590 }); 591 jQuery(this).find('.sc_tabs_titles li').eq(0).addClass('sc_tabs_active'); 592 jQuery(this).find('.sc_tabs_content').eq(0).fadeIn(function() { 593 "use strict"; 594 dentario_init_shortcodes(jQuery(this)); 595 if (window.dentario_init_hidden_elements) dentario_init_hidden_elements(jQuery(this)); 596 }); 597 }); 598 } 599 600 // Toggles 601 if (container.find('.sc_toggles .sc_toggles_title:not(.inited)').length > 0) { 602 container.find('.sc_toggles .sc_toggles_title:not(.inited)') 603 .addClass('inited') 604 .on('click', function () { 605 "use strict"; 606 jQuery(this).toggleClass('ui-state-active').parent().toggleClass('sc_active'); 607 jQuery(this).parent().find('.sc_toggles_content').slideToggle(300, function () { 608 "use strict"; 609 dentario_init_shortcodes(jQuery(this).parent().find('.sc_toggles_content')); 610 if (window.dentario_init_hidden_elements) dentario_init_hidden_elements(jQuery(this).parent().find('.sc_toggles_content')); 611 }); 612 }); 613 } 614 615 //Zoom 616 if (container.find('.sc_zoom:not(.inited)').length > 0) { 617 container.find('.sc_zoom:not(.inited)') 618 .each(function () { 619 "use strict"; 620 if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return; 621 jQuery(this).addClass('inited'); 622 jQuery(this).find('img').elevateZoom({ 623 zoomType: "lens", 624 lensShape: "round", 625 lensSize: 200, 626 lensBorderSize: 4, 627 lensBorderColour: '#ccc' 628 }); 629 }); 630 } 631 632} 633 634 635 636// Scrolled areas 637function dentario_sc_init_scroll_area(obj) { 638 "use strict"; 639 640 // Wait for images loading 641 if (!dentario_check_images_complete(obj) && DENTARIO_STORAGE['scroll_init_counter']++ < 30) { 642 setTimeout(function() { dentario_sc_init_scroll_area(obj); }, 200); 643 return; 644 } 645 646 // Start init scroll area 647 obj.addClass('inited'); 648 649 var id = obj.attr('id'); 650 if (id == undefined) { 651 id = 'scroll_'+Math.random(); 652 id = id.replace('.', ''); 653 obj.attr('id', id); 654 } 655 obj.addClass(id); 656 657 var parent_obj = obj.parent(); 658 var parent_id = parent_obj.attr('id'); 659 if (parent_id == undefined) { 660 parent_id = 'scroll_wrap_'+Math.random(); 661 parent_id = parent_id.replace('.', ''); 662 parent_obj.attr('id', parent_id); 663 } 664 parent_obj.addClass(parent_id); 665 666 var bar = obj.find('#'+id+'_bar'); 667 if (bar.length > 0 && !bar.hasClass(id+'_bar')) { 668 bar.addClass(id+'_bar'); 669 } 670 671 // Correct wrapper width (if scroll dir = horizontal) 672 if (obj.hasClass('sc_scroll_horizontal')) { 673 obj.find('.sc_scroll_wrapper > .sc_scroll_slide').css('width', 'auto'); 674 obj.find('.sc_scroll_wrapper').css('width', obj.find('.sc_scroll_wrapper > .sc_scroll_slide').width()+10); 675 obj.find('.sc_scroll_wrapper > .sc_scroll_slide').css('width', '100%') 676 } 677 678 // Init Swiper with scroll plugin 679 if (DENTARIO_STORAGE['swipers'] === undefined) DENTARIO_STORAGE['swipers'] = {}; 680 DENTARIO_STORAGE['swipers'][id] = new Swiper('.'+id, { 681 calculateHeight: false, 682 resizeReInit: true, 683 autoResize: true, 684 freeMode: true, 685 freeModeFluid: true, 686 grabCursor: true, 687 mode: obj.hasClass('sc_scroll_vertical') ? 'vertical' : 'horizontal', 688 direction: obj.hasClass('sc_scroll_vertical') ? 'vertical' : 'horizontal', 689 slidesPerView: obj.hasClass('sc_scroll') ? 'auto' : 1, 690 nextButton: parent_obj.hasClass('sc_scroll_controls') ? '#'+parent_id+' .sc_scroll_next' : false, 691 prevButton: parent_obj.hasClass('sc_scroll_controls') ? '#'+parent_id+' .sc_scroll_prev' : false, 692 scrollbar: '.'+id+'_bar', 693 scrollbarHide: true, 694 }) 695 696 // VC hook 697 obj.data('settings', {mode: 'horizontal'}); 698} 699 700 701// Slider navigation 702function dentario_sc_prepare_slider_navi(slider) { 703 "use strict"; 704 var navi = null; 705 706 // Pagination with slide's title 707 navi = slider.siblings('.sc_slider_pagination'); 708 if (navi.length > 0) { 709 navi.on('click', '.post_item', function(e){ 710 var swiper = jQuery(this).parents('.sc_slider_pagination_area').find('.swiper-slider-container'); 711 var id = swiper.attr('id'); 712 DENTARIO_STORAGE['swipers'][id].slideTo(jQuery(this).index()+1); 713 e.preventDefault(); 714 return false; 715 }); 716 } 717} 718 719// Sliders: Pagination 720function dentario_sc_change_active_pagination_in_slider(slider, idx) { 721 "use strict"; 722 var pg = slider.parents('.sc_slider_pagination_area').find('.sc_slider_pagination'); 723 if (pg.length==0) return; 724 pg.find('.post_item').removeClass('active').eq(idx).addClass('active'); 725 var h = pg.height(); 726 var off = pg.find('.active').offset().top - pg.offset().top; 727 var off2 = pg.find('.sc_scroll_wrapper').offset().top - pg.offset().top; 728 var h2 = pg.find('.active').height(); 729 if (off < 0) { 730 pg.find('.sc_scroll_wrapper').css({'transform': 'translate3d(0px, 0px, 0px)', 'transition-duration': '0.3s'}); 731 } else if (h <= off+h2) { 732 pg.find('.sc_scroll_wrapper').css({'transform': 'translate3d(0px, -'+(Math.abs(off2)+off-h/4)+'px, 0px)', 'transition-duration': '0.3s'}); 733 } 734} 735 736// Sliders: Autoheight 737function dentario_sc_slider_autoheight(slider) { 738 "use strict"; 739 if (slider.hasClass('.sc_slider_height_auto')) { 740 slider.find('.swiper-slide').each(function() { 741 "use strict"; 742 if (jQuery(this).data('height_auto') == undefined) { 743 jQuery(this).attr('data-height_auto', jQuery(this).height()); 744 } 745 }); 746 } 747} 748 749// Sliders: Resize 750function dentario_sc_sliders_resize() { 751 "use strict"; 752 var slider = arguments[0]!==undefined ? arguments[0] : '.sc_slider_swiper.inited'; 753 var resize = arguments[1]!==undefined ? arguments[1] : true; 754 755 jQuery(slider).each(function() { 756 "use strict"; 757 var id = jQuery(this).attr('id'); 758 var width = jQuery(this).width(); 759 var last_width = jQuery(this).data('last-width'); 760 if (isNaN(last_width)) last_width = 0; 761 762 // Change slides_per_view 763 if (last_width==0 || last_width!=width) { 764 var spv = jQuery(this).data('slides-per-view'); 765 if (spv == undefined) spv = 1; 766 var min_width = jQuery(this).data('slides-min-width');
767 if (min_width == undefined) min_width = 50; 768 if (width / spv < min_width) spv = Math.max(1, Math.floor(width / min_width)); 769 jQuery(this).data('last-width', width); 770 if (DENTARIO_STORAGE['swipers'][id].params.slidesPerView != spv) { 771 DENTARIO_STORAGE['swipers'][id].params.slidesPerView = spv; 772 DENTARIO_STORAGE['swipers'][id].params.loopedSlides = spv; 773 //DENTARIO_STORAGE['swipers'][id].reInit(); 774 } 775 } 776 777 // Resize slider 778 if ( resize && !jQuery(this).hasClass('sc_slider_height_fixed') ) { 779 var h = 0; 780 if ( jQuery(this).find('.swiper-slide > img').length > 0 ) { 781 jQuery(this).find('.swiper-slide > img').each(function() { 782 "use strict"; 783 if (jQuery(this).height() > h) h = jQuery(this).height(); 784 }); 785 jQuery(this).height(h); 786 } else if ( jQuery(this).find('.swiper-slide').css('backgroundImage')!='none' ) { 787 h = Math.floor(width/16*9); 788 jQuery(this).height(h).find('.swiper-slide').height(h); 789 } 790 } 791 }); 792 793 // Resize slider pagination area 794 jQuery('.sc_slider_pagination_area').each(function() { 795 "use strict"; 796 var h = jQuery(this).find('.sc_slider').height(); 797 if (h) { 798 jQuery(this).height(h); 799 jQuery(this).find('.sc_slider_pagination').height(h); 800 jQuery(this).find('.sc_slider_pagination .sc_scroll_vertical').height(h); 801 } 802 }); 803} 804 805 806// Skills init 807function dentario_sc_init_skills(container) { 808 "use strict"; 809 if (arguments.length==0) var container = jQuery('body'); 810 var scrollPosition = jQuery(window).scrollTop() + jQuery(window).height(); 811 812 container.find('.sc_skills_item:not(.inited)').each(function () { 813 "use strict"; 814 var skillsItem = jQuery(this); 815 var scrollSkills = skillsItem.offset().top; 816 if (scrollPosition > scrollSkills) { 817 skillsItem.addClass('inited'); 818 var skills = skillsItem.parents('.sc_skills').eq(0); 819 var type = skills.data('type'); 820 var total = (type=='pie' && skills.hasClass('sc_skills_compact_on')) ? skillsItem.find('.sc_skills_data .pie') : skillsItem.find('.sc_skills_total').eq(0); 821 var start = parseInt(total.data('start')); 822 var stop = parseInt(total.data('stop')); 823 var maximum = parseInt(total.data('max')); 824 var startPercent = Math.round(start/maximum*100); 825 var stopPercent = Math.round(stop/maximum*100); 826 var ed = total.data('ed'); 827 var duration = parseInt(total.data('duration')); 828 var speed = parseInt(total.data('speed')); 829 var step = parseInt(total.data('step')); 830 if (type == 'bar') { 831 var dir = skills.data('dir'); 832 var count = skillsItem.find('.sc_skills_count').eq(0); 833 if (dir=='horizontal') 834 count.css('width', startPercent + '%').animate({ width: stopPercent + '%' }, duration); 835 else if (dir=='vertical') 836 count.css('height', startPercent + '%').animate({ height: stopPercent + '%' }, duration); 837 dentario_sc_animate_skills_counter(start, stop, speed-(dir!='unknown' ? 5 : 0), step, ed, total); 838 } else if (type == 'counter') { 839 dentario_sc_animate_skills_counter(start, stop, speed - 5, step, ed, total); 840 } else if (type == 'pie') { 841 var steps = parseInt(total.data('steps')); 842 var bg_color = total.data('bg_color'); 843 var border_color = total.data('border_color'); 844 var cutout = parseInt(total.data('cutout')); 845 var easing = total.data('easing'); 846 var options = { 847 segmentShowStroke: true, 848 segmentStrokeColor: border_color, 849 segmentStrokeWidth: 1, 850 percentageInnerCutout : cutout, 851 animationSteps: steps, 852 animationEasing: easing, 853 animateRotate: true, 854 animateScale: false, 855 }; 856 var pieData = []; 857 total.each(function() { 858 "use strict"; 859 var color = jQuery(this).data('color'); 860 var stop = parseInt(jQuery(this).data('stop')); 861 var stopPercent = Math.round(stop/maximum*100); 862 pieData.push({ 863 value: stopPercent, 864 color: color 865 }); 866 }); 867 if (total.length == 1) { 868 dentario_sc_animate_skills_counter(start, stop, Math.round(1500/steps), step, ed, total); 869 pieData.push({ 870 value: 100-stopPercent, 871 color: bg_color 872 }); 873 } 874 var canvas = skillsItem.find('canvas'); 875 canvas.attr({width: skillsItem.width(), height: skillsItem.width()}).css({width: skillsItem.width(), height: skillsItem.height()}); 876 new Chart(canvas.get(0).getContext("2d")).Doughnut(pieData, options); 877 } 878 } 879 }); 880} 881 882// Skills counter animation 883function dentario_sc_animate_skills_counter(start, stop, speed, step, ed, total) { 884 "use strict"; 885 start = Math.min(stop, start + step); 886 total.text(start+ed); 887 if (start < stop) { 888 setTimeout(function () { 889 dentario_sc_animate_skills_counter(start, stop, speed, step, ed, total); 890 }, speed); 891 } 892} 893 894// Skills arc init 895function dentario_sc_init_skills_arc(container) { 896 "use strict"; 897 if (arguments.length==0) var container = jQuery('body');
898 container.find('.sc_skills_arc:not(.inited)').each(function () { 899 var arc = jQuery(this); 900 arc.addClass('inited'); 901 var items = arc.find('.sc_skills_data .arc'); 902 var canvas = arc.find('.sc_skills_arc_canvas').eq(0); 903 var legend = arc.find('.sc_skills_legend').eq(0); 904 var w = Math.round(arc.width() - legend.width()); 905 var c = Math.floor(w/2); 906 var o = { 907 random: function(l, u){ 908 "use strict"; 909 return Math.floor((Math.random()*(u-l+1))+l); 910 }, 911 diagram: function(){ 912 "use strict"; 913 var r = Raphael(canvas.attr('id'), w, w), 914 hover = Math.round(w/2/items.length), 915 rad = hover, 916 step = Math.round(((w-20)/2-rad)/items.length), 917 stroke = Math.round(w/9/items.length), 918 speed = 400; 919 920 921 r.circle(c, c, Math.round(w/2)).attr({ stroke: 'none', fill: DENTARIO_STORAGE['theme_skin_bg_color'] ? DENTARIO_STORAGE['theme_skin_bg_color'] : '#ffffff' }); 922 923 var title = r.text(c, c, arc.data('caption')).attr({ 924 font: Math.round(rad*0.75)+'px "'+DENTARIO_STORAGE['theme_font']+'"', 925 fill: DENTARIO_STORAGE['theme_skin_color'] ? DENTARIO_STORAGE['theme_skin_color'] : '#909090' 926 }).toFront(); 927 928 rad -= Math.round(step/2); 929 930 r.customAttributes.arc = function(value, color, rad){ 931 "use strict"; 932 var v = 3.6 * value, 933 alpha = v == 360 ? 359.99 : v, 934 rand = o.random(91, 240), 935 a = (rand-alpha) * Math.PI/180, 936 b = rand * Math.PI/180, 937 sx = c + rad * Math.cos(b), 938 sy = c - rad * Math.sin(b), 939 x = c + rad * Math.cos(a), 940 y = c - rad * Math.sin(a), 941 path = [['M', sx, sy], ['A', rad, rad, 0, +(alpha > 180), 1, x, y]]; 942 return { path: path, stroke: color } 943 } 944 945 items.each(function(i){ 946 "use strict"; 947 var t = jQuery(this), 948 color = t.find('.color').val(), 949 value = t.find('.percent').val(), 950 text = t.find('.text').text(); 951 952 rad += step; 953 var z = r.path().attr({ arc: [value, color, rad], 'stroke-width': stroke }); 954 955 z.mouseover(function(){ 956 "use strict"; 957 this.animate({ 'stroke-width': hover, opacity: .75 }, 1000, 'elastic'); 958 if (Raphael.type != 'VML') //solves IE problem 959 this.toFront(); 960 title.stop().animate({ opacity: 0 }, speed, '>', function(){ 961 this.attr({ text: (text ? text + '\n' : '') + value + '%' }).animate({ opacity: 1 }, speed, '<'); 962 }); 963 }).mouseout(function(){ 964 "use strict"; 965 this.stop().animate({ 'stroke-width': stroke, opacity: 1 }, speed*4, 'elastic'); 966 title.stop().animate({ opacity: 0 }, speed, '>', function(){ 967 title.attr({ text: arc.data('caption') }).animate({ opacity: 1 }, speed, '<'); 968 }); 969 }); 970 971 }); 972 973 } 974 } 975 o.diagram(); 976 }); 977} 978 979 980// Countdown update 981function dentario_countdown(dt) { 982 "use strict"; 983 var counter = jQuery(this).parent(); 984 for (var i=3; i<dt.length; i++) { 985 var v = (dt[i]<10 ? '0' : '') + dt[i]; 986 counter.find('.sc_countdown_item').eq(i-3).find('.sc_countdown_digits span').addClass('hide'); 987 for (var ch=v.length-1; ch>=0; ch--) { 988 counter.find('.sc_countdown_item').eq(i-3).find('.sc_countdown_digits span').eq(ch+(i==3 && v.length<3 ? 1 : 0)).removeClass('hide').text(v.substr(ch, 1)); 989 } 990 } 991} 992 993 994// Contact form handlers 995
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.