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