function rplg_svg() { return '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + ''; } function simple_stars(rating, color) { var str = ''; for (var i = 1; i < 6; i++) { var score = rating - i; if (score >= 0) { str += ''; } else if (score > -1 && score < 0) { if (score < -0.75) { str += ''; } else if (score > -0.25) { str += ''; } else { str += ''; } } else { str += ''; } } return str; } function yelp_stars(rating) { var rating = Math.round(rating * 2) / 2; return ''; } function render_stars(rating, provider, color) { switch (provider) { case 'google' : return simple_stars(rating, '#e7711b'); case 'facebook' : return simple_stars(rating, '#3c5b9b'); case 'yelp' : return yelp_stars(rating); } return simple_stars(rating, color); } function render_logo(provider) { switch (provider) { case 'google' : return ''; case 'facebook' : return ''; case 'yelp' : return ''; } } function render_rplg_logo(provider) { if (provider == 'summary') return ''; else return ''; } function _rplg_init_svg(el) { var span = document.createElement('span'); span.style.display = 'none'; span.innerHTML = rplg_svg(); document.body.appendChild(span); var stars = el.querySelectorAll('.rplg-stars'); for (var i = 0; i < stars.length; i++) { var info = stars[i].getAttribute('data-info'), infos = info.split(','), rating = infos[0], provider = infos[1], color = infos[2]; stars[i].innerHTML = render_stars(rating, provider, color); } var badges = el.querySelectorAll('.rplg-review-badge'); for (var i = 0; i < badges.length; i++) { badges[i].innerHTML = render_rplg_logo(badges[i].getAttribute('data-provider')); } } function _rplg_badge_init(el) { var badge_cnt = el.querySelector('.rplg-badge-cnt'), is_float = badge_cnt.className.indexOf('-fixed') > -1; if (is_float) { document.body.appendChild(el); } var badges = el.querySelectorAll('.rplg-badge2'), rplg = document.createElement('div'); for (var i = 0; i < badges.length; i++) { var badge = badges[i], provider = badge.getAttribute('data-provider'), badge_key = 'badge_float_' + provider, session = sessionStorage.getItem(badge_key), logo = badge.querySelector('.rplg-badge-logo'), btn = badge.querySelector('.rplg-badge2-btn'), close = badge.querySelector('.rplg-badge2-close'), form = badge.querySelector('.rplg-form'); (function(badge, badge_key, session, provider, logo, btn, close, form) { if (is_float) { badge.style.display='block'; } if (close) { if (session) { var data = JSON.parse(session); if (data.hide) { badge.style.display='none'; } } close.onclick = function() { badge.style.display='none'; var value = JSON.parse(sessionStorage.getItem(badge_key) || '{}'); value.hide = true; sessionStorage.setItem(badge_key, JSON.stringify(value)); }; } if (logo && provider != 'summary') { logo.innerHTML = render_logo(provider); } if (form) { btn.onclick = function() { rplg_load_imgs(form); form.style.display='block'; }; rplg.appendChild(form); } })(badge, badge_key, session, provider, logo, btn, close, form); } if (rplg.hasChildNodes()) { rplg.className = 'rplg'; document.body.appendChild(rplg); } } function rplg_load_imgs(el) { var imgs = el.querySelectorAll('img.rplg-blazy[data-src]'); for (var i = 0; i < imgs.length; i++) { imgs[i].setAttribute('src', imgs[i].getAttribute('data-src')); imgs[i].removeAttribute('data-src'); } } function rplg_next_reviews(pagin) { var parent = this.parentNode, selector = '.rplg .rplg-hide'; reviews = parent.querySelectorAll(selector); for (var i = 0; i < pagin && i < reviews.length; i++) { if (reviews[i]) { reviews[i].className = reviews[i].className.replace('rplg-hide', ''); } } reviews = parent.querySelectorAll(selector); if (reviews.length < 1) { parent.removeChild(this); } window.rplg_blazy && window.rplg_blazy.revalidate(); return false; } function rplg_leave_review_window() { _rplg_popup(this.getAttribute('href'), 620, 500); return false; } function _rplg_lang() { var n = navigator; return (n.language || n.systemLanguage || n.userLanguage || 'en').substr(0, 2).toLowerCase(); } function _rplg_popup(url, width, height) { var dual_left = window.screenLeft != undefined ? window.screenLeft : window.screenX, dual_top = window.screenTop != undefined ? window.screenTop : window.screenY, doc_elem = document.documentElement, screen_width = window.innerWidth ? window.innerWidth : doc_elem.clientWidth ? doc_elem.clientWidth : screen.width, screen_height = window.innerHeight ? window.innerHeight : doc_elem.clientHeight ? doc_elem.clientHeight : screen.height, left = ((screen_width / 2) - (width / 2)) + dual_left, top = ((screen_height / 2) - (height / 2)) + dual_top, win = window.open(url, '', 'scrollbars=yes, width=' + width + ', height=' + height + ', top=' + top + ', left=' + left); if (window.focus) { win.focus(); } return win; } function _rplg_init_timeago(el) { var els = el.querySelectorAll('.rplg-review-time'); for (var i = 0; i < els.length; i++) { var clss = els[i].className, time; time = parseInt(els[i].getAttribute('data-time')) * 1000; els[i].innerHTML = WPacTime.getTime(time, _rplg_lang(), 'ago'); } } function _rplg_init_blazy(attempts) { if (!window.Blazy) { if (attempts > 0) { setTimeout(function() { _rplg_init_blazy(attempts - 1); }, 200); } return; } window.rplg_blazy = new Blazy({selector: 'img.rplg-blazy'}); } function _rplg_read_more(el) { var read_more = el.querySelectorAll('.rplg-more-toggle'); for (var i = 0; i < read_more.length; i++) { (function(rm) { rm.onclick = function() { rm.parentNode.removeChild(rm.previousSibling.previousSibling); rm.previousSibling.className = ''; rm.textContent = ''; }; })(read_more[i]); } } function _rplg_init_slider(el, data) { if (!window.Rplgsw) { return setTimeout(function() { _rplg_init_slider(el, data); }, 200); } var swiperEl = el.querySelector('.rplgsw-container'), swiperData = { loop : true, autoplay : parseInt(data.speed), effect : data.effect, slidesPerView : parseInt(data.count), spaceBetween : parseInt(data.space), autoHeight : true, fade : { crossFade : true }, breakpoints : {}, onInit : function(swiper) { setTimeout(function() { window.dispatchEvent(new Event('resize')); }, 500); }, onTransitionEnd : function(swiper){ window.rplg_blazy && window.rplg_blazy.revalidate(); } }; if (data.pagin) { swiperData.paginationClickable = true; swiperData.pagination = '.rplgsw-pagination'; } if (data.nextprev) { swiperData.nextButton = el.querySelector('.rplg-slider-next'); swiperData.prevButton = el.querySelector('.rplg-slider-prev'); } swiperData.breakpoints[data.mobileBreakpoint] = { slidesPerView: parseInt(data.mobileCount), spaceBetween: 10 }; swiperData.breakpoints[data.tabletBreakpoint] = { slidesPerView: parseInt(data.tabletCount), spaceBetween: 20 }; swiperData.breakpoints[data.desktopBreakpoint] = { slidesPerView: parseInt(data.desktopCount), spaceBetween: 30 }; return new Rplgsw(swiperEl, swiperData); } function _rplg_init_flash(el, opts) { var i = 0, expanded = false, wait = false, reviews = [], cnt = el.querySelector('.rplg-flash-content'), x = cnt.querySelector('.rplg-flash-x'), card = cnt.querySelector('.rplg-flash-card'), story = cnt.querySelector('.rplg-flash-story'), start = (opts.flash_start || 3) * 1000, visible = (opts.flash_visible || 5) * 1000, invisible = (opts.flash_invisible || 5) * 1000, rplgIsHover = e => e.parentElement.querySelector(':hover') === e; document.body.appendChild(el); var revels = el.querySelectorAll('.rplg-form-review'); for (var j = 0; j < revels.length; j++) { var revel = revels[j], infos = revel.querySelector('.rplg-stars').getAttribute('data-info').split(','); reviews.push({ avatar : opts.hide_avatar ? '' : revel.querySelector('.rplg-review-avatar').getAttribute('data-src'), author_name : opts.hide_name ? '' : revel.querySelector('.rplg-review-name').getAttribute('title'), time : opts.disable_review_time ? '' : revel.querySelector('.rplg-review-time').getAttribute('data-time'), rating : infos[0], provider : infos[1] }); } var show = function(nonext) { if (!expanded && !wait) { _rplg_flashnext(el, story, i, reviews, opts); cnt.className = 'rplg-flash-content rplg-flash-visible'; i = i + 1 < reviews.length ? i + 1 : 0; } wait = false; setTimeout(function() { if (!expanded && !rplgIsHover(cnt) && !wait) { cnt.className = 'rplg-flash-content'; } setTimeout(show, invisible); }, visible); }; setTimeout(show, start); x.onclick = function() { cnt.className = 'rplg-flash-content'; }; story.onclick = function() { expanded = true; rplg_load_imgs(cnt); var idx = card.querySelector('.rplg-row').getAttribute('data-idx'), review = card.querySelector('.rplg-form-review[data-idx="' + idx + '"]'); review.className = 'rplg-form-review rplg-highlight'; setTimeout(function() { review.scrollIntoView({behavior: 'smooth', block: 'center'}) }, 300); card.className = 'rplg-flash-card rplg-flash-expanded'; cnt.className = 'rplg-flash-content rplg-flash-visible'; x.innerHTML = ''; x.onclick = function() { review.className = 'rplg-form-review'; card.className = 'rplg-flash-card'; expanded = false; wait = true; x.innerHTML = '×'; x.onclick = function() { cnt.className = 'rplg-flash-content'; }; }; }; } function _rplg_flashnext(el, story, i, reviews, opts) { if (story.firstChild) { var review = reviews[i]; story.querySelector('.rplg-row').setAttribute('data-idx', i); if (opts.flash_user_photo) { story.querySelector('.rplg-flash-img').innerHTML = ''; } else if (!opts.hide_avatar) { story.querySelector('.rplg-flash-photo').innerHTML = ''; } if (!opts.hide_name) { story.querySelector('.rplg-flash-name').innerHTML = review.author_name; } story.querySelector('.rplg-flash-rating').innerHTML = parseInt(review.rating); story.querySelector('.rplg-flash-stars').innerHTML = _rplg_flashtext(review, opts); if (!opts.disable_review_time) { story.querySelector('.rplg-flash-time').innerHTML = WPacTime.getTimeAgo(review.time * 1000, _rplg_lang(), 'ago'); } } else { story.innerHTML = _rplg_flashstory(i, reviews, opts); } } function _rplg_flashstory(i, reviews, opts) { var review = reviews[i]; return '
' + (opts.flash_hide_logo && !opts.flash_user_photo ? '' : '
' + '
' + (opts.flash_user_photo ? '' + review.author_name + '' : '') + '
' + '
') + '
' + '
' + (opts.flash_user_photo || opts.hide_avatar ? '' : '' + '' + review.author_name + '' + '') + (opts.hide_name ? '' : '' + review.author_name + ' ') + ' ' + opts.text.m1.replace('%s', '' + review.rating + '') + '' + '
' + '
' + _rplg_flashtext(review, opts) + '
' + '' + '
' + '
'; } function _rplg_flashtext(review, opts) { return '' + render_stars(review.rating, review.provider, 'ffa318') + ' ' + opts.text.m2 + ' '; } function _rplg_get_parent(el, cl) { cl = cl || 'rplg'; if (el.className.split(' ').indexOf(cl) < 0) { // the last semicolon (;) without braces ({}) in empty loop makes error in WP Faster Cache //while ((el = el.parentElement) && el.className.split(' ').indexOf(cl) < 0); while ((el = el.parentElement) && el.className.split(' ').indexOf(cl) < 0){} } return el; } function rplg_init(el, cb) { var el = _rplg_get_parent(el), img = el.querySelector('img[data-exec]'); if (img.getAttribute('data-exec') == 'true') return el; _rplg_init_svg(el); _rplg_init_timeago(el); _rplg_read_more(el); if (cb) cb(el); _rplg_init_blazy(10); img.setAttribute('data-exec', 'true'); return el; } function rplg_init_slider_theme(el, data) { rplg_init(el, function(el) { _rplg_init_slider(el, data); }); } function rplg_init_grid_theme(el) { rplg_init(el); } function rplg_init_list_theme(el) { rplg_init(el); } function rplg_init_badge_theme(el) { rplg_init(el, function(el) { _rplg_badge_init(el); }); } function rplg_init_temp_theme(el) { rplg_init(el); } function rplg_init_flash_theme(el, opts) { rplg_init(el, function(el) { _rplg_init_flash(el, opts); }); } document.addEventListener('DOMContentLoaded', function() { var jsexec = function(js) { eval(js); }, rplgimgs = document.querySelectorAll('.rplg > img[data-exec="false"]'); for (var i = 0; i < rplgimgs.length; i++) { (function(rplgimg) { if (rplgimg.getAttribute('data-exec') == 'false') { var js = rplgimg.getAttribute('onload'); jsexec.call(rplgimg, js); console.log('rplg exec'); } })(rplgimgs[i]); } });