{"version":3,"sources":["../../../../dev/j/v2/pages/windows-rating-v2.js"],"names":["avm","define","radios","stars","rating","this","allStars","$","forEach","radio","index","array","push","data","value","get","on","rateClick","apply","arguments","append","length","hideRadios","evt","star","currentTarget","lightUpStars","rateOnRadios","hide","removeClass","siblings","prevAll","addClass","checked","destroy","show","off","remove","require","reviews","JSON","parse","document","getElementById","innerHTML","fetch","from","to","ratings","slice","reviewsDOM","fn","map","review","d","Date","date","day","getDate","month","getMonth","year","getFullYear","prefix","slide","thing","thingValue","text","name","nameValue","ratingValue","Array","i","parseInt","formLoaded","url","avastGlobals","web","RootPath","locale","renderForm","content","find","initAvastForm","closest","before","attr","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","status","responseText","send","ready","reviewModule","bxFetchSlide","ratingPoints","totalRatings","reduce","pv","cv","avgRating","percentAvgRating","Math","floor","width","toPrecision"],"mappings":"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","file":"windows-rating-v2.js","sourcesContent":["(function () {\n\t/**\n\t * Convert radio buttons to stars\n\t * @version 1.1.0\n\t * @author Aleš Gabriel, Jaroslav Slaby , \n\t * @module avast.web.rating\n\t * @param {NodeList} Array of radio button elements\n\t * @returns Object of methods\n\t */\n\tavm.define('avast.web.rating', function (radios) {\n\t\treturn {\n\t\t\tradios: radios,\n\t\t\tstars: function () {\n\t\t\t\tvar rating = this,\n\t\t\t\t\tallStars = $('
'),\n\t\t\t\t\tradios = this.radios,\n\t\t\t\t\tstars = [];\n\n\t\t\t\tthis.allStars = allStars;\n\n\t\t\t\tradios.forEach(function (radio, index, array) {\n\t\t\t\t\tstars.push($('
').data('value', radio.value).get(0));\n\t\t\t\t});\n\n\t\t\t\tallStars.on('click', '.rating-star', function () {\n\t\t\t\t\trating.rateClick.apply(rating, arguments); // TODO: Or function.bind()? Support for forEach and bind is almost the same\n\t\t\t\t});\n\t\t\t\tallStars.append(stars);\n\n\t\t\t\tif (allStars.length) {\n\t\t\t\t\tthis.hideRadios(radios);\n\t\t\t\t}\n\n\t\t\t\treturn allStars;\n\t\t\t},\n\t\t\trateClick: function (evt) {\n\t\t\t\tvar star = $(evt.currentTarget);\n\n\t\t\t\tthis.lightUpStars(star);\n\t\t\t\tthis.rateOnRadios(star.data('value'), this.radios);\n\t\t\t},\n\t\t\thideRadios: function (radios) {\n\t\t\t\t$(radios).hide();\n\t\t\t},\n\t\t\tlightUpStars: function (star) {\n\t\t\t\tstar.removeClass('selected');\n\t\t\t\tstar.siblings().removeClass('selected');\n\t\t\t\tstar.prevAll().addClass('selected');\n\t\t\t\tstar.addClass('selected');\n\t\t\t},\n\t\t\trateOnRadios: function (value, radios) {\n\t\t\t\tradios.forEach(function (radio) {\n\t\t\t\t\tif (radio.value === value) {\n\t\t\t\t\t\tradio.checked = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tdestroy: function () {\n\t\t\t\t$(this.radios).show();\n\t\t\t\tthis.allStars.off('click');\n\t\t\t\tthis.allStars.remove();\n\t\t\t}\n\t\t}\n\t})\n\n\t/**\n\t * Parse JSON to microdata reviews\n\t * @version 1.1.0\n\t * @author Aleš Gabriel, Jaroslav Slaby , \n\t * @module avast.web.review\n\t * @returns Object of methods\n\t * @description Expected JSON data structure:\n\t\t[\n\t\t\t{\n\t\t\t\t\"date\": \"2015-10-24T04:43:04.8019109Z\",\n\t\t\t\t\"name\": \"n\",\n\t\t\t\t\"rating\": 4,\n\t\t\t\t\"text\": \"this is the best antivirus\"\n\t\t\t}\n\t\t]\n\t */\n\tavm.define('avast.web.review', (function (data) {\n\t\tvar $ = avm.require('cash')\n\t\treturn {\n\t\t\treviews: data ? JSON.parse(data) : JSON.parse(document.getElementById('avast-adc-reviews').innerHTML),\n\t\t\tfetch: function (from, to) {\n\t\t\t\tvar ratings = [],\n\t\t\t\t\tfrom = from || 0,\n\t\t\t\t\tto = to || this.reviews.length,\n\t\t\t\t\treviews = this.reviews.slice(from, to);\n\n\t\t\t\treviewsDOM = $.fn.map(reviews, function (review) {\n\t\t\t\t\tvar d = new Date(review.date)\n\t\t\t\t\tvar day = d.getDate();\n\t\t\t\t\tvar month = d.getMonth() + 1;\n\t\t\t\t\tvar year = d.getFullYear();\n\n\t\t\t\t\tvar prefix = 'slider-review-',\n\t\t\t\t\t\tslide = $('
').addClass(prefix + 'slide'),\n\n\t\t\t\t\t\tthing = $('
').addClass(prefix + 'thing'),\n\t\t\t\t\t\tthingValue = $('AVS').text('Avast Free Antivirus for Windows 10'),\n\t\t\t\t\t\tname = $('
').addClass(prefix + 'author'),\n\t\t\t\t\t\tnameValue = $('').text(review.name),\n\t\t\t\t\t\trating = $('
').addClass(prefix + 'rating'),\n\t\t\t\t\t\tratingValue = $('').text(review.rating),\n\t\t\t\t\t\tstars = new Array(review.rating)\n\t\t\t\t\ttext = $('

').addClass(prefix + 'text').text(review.text),\n\t\t\t\t\t\tdate = $('').text(day + '/' + month + '/' + year).addClass(prefix + 'date');\n\n\t\t\t\t\tfor (var i = 0; i < parseInt(review.rating); i++) {\n\t\t\t\t\t\trating.append('');\n\t\t\t\t\t}\n\n\t\t\t\t\tslide.append([thing.append(thingValue), name.append(nameValue), date, rating.append(ratingValue), text]);\n\t\t\t\t\tratings.push(parseInt(review.rating));\n\n\t\t\t\t\treturn slide;\n\t\t\t\t});\n\n\t\t\t\treturn reviewsDOM;\n\t\t\t}\n\n\t\t}\n\t})());\n\n\t// NEW form loader\n\tvar $ = avm.require('cash'),\n\t\trateButton = ('.rateButton'),\n\t\tformLoaded = false,\n\t\turl = avastGlobals.web.RootPath ? avastGlobals.web.RootPath + locale + '/' + 'rating-form.php' : 'rating-form.php';\n\n\t$(rateButton).on('click', function () {\n\t\tif (!formLoaded) {\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('GET', url);\n\t\t\txhr.setRequestHeader('X-Requested-With', 'XmlHttpRequest');\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (xhr.readyState !== 4) return;\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\trenderForm(xhr.responseText)\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr.send();\n\n\t\t\tfunction renderForm(content) {\n\t\t\t\t$('#rate').addClass('rating-form');\n\n\t\t\t\t$('#ratingForm').append(content, function () {\n\t\t\t\t\tformLoaded = true;\n\t\t\t\t\tvar rating = avm.require('avast.web.rating')($('.rating-form').find('input[type=\"radio\"][name=\"rating\"]').get()),\n\t\t\t\t\t\tstars = rating.stars();\n\n\t\t\t\t\tinitAvastForm();\n\n\t\t\t\t\t$('.rating-form').find('input[type=\"radio\"][name=\"rating\"]')\n\t\t\t\t\t\t.closest('.form-item')\n\t\t\t\t\t\t.hide()\n\t\t\t\t\t\t.before($('

').addClass('form-item').append(stars));\n\n\t\t\t\t\t// Form tweaks\n\t\t\t\t\t$('.rating-form').find('#frm-text').attr('maxlength', '300');\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t});\n})();\n\n$(document).ready(function () {\n\t//console.time('buildSlides')\n\tvar reviewModule = avm.require('avast.web.review');\n\treviews = reviewModule.reviews;\n\tbxFetchSlide = 0,\n\t\tratingPoints = 5;\n\n\t// Total reviews and average rating to DOM\n\tvar totalRatings = reviews.reduce(function (pv, cv) { return pv + cv.rating; }, 0);\n\tvar avgRating = (totalRatings) / reviews.length;\n\tvar percentAvgRating = Math.floor((100 / ratingPoints) * avgRating);\n\n\t$('.rating-bar').width(30 * ratingPoints);\n\t$('.rating-bar-average').width(percentAvgRating + '%');\n\n\t$('.total-reviews').text(reviews.length)\n\t$('.average-rating').text(avgRating.toPrecision(2))\n\t//console.timeEnd('buildSlides')\n});\n"]}