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