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