{"version":3,"sources":["RatingsAndReviews.b1.js"],"names":["global","factory","define","amd","RatingsAndReviews","exports","module","window","root","reviewsContainer","document","getElementById","makeAjaxCall","methodType","url","xhr","XMLHttpRequest","open","send","onreadystatechange","readyState","status","response","seeMoreReviewsLink","json","JSON","parse","reviewsListContainer","asideReview","querySelector","reviewsInfo","reviews","reviewsLink","reviewCards","querySelectorAll","length","i","userNameElement","locationElement","userName","IsAnonymous","FName","LName","charAt","description","Content","starsGrade","GeneralRating","location","CityName","StateAbbr","startElement","descriptionElement","infoElements","style","width","textContent","parentElement","HTMLAnchorElement","href","getAttribute","hasAttribute","fillReviewCards","removeAttribute","display","visibility","showRatingsAndReviews","this","loadDetailSection","fn","elementsToObserve","observer","IntersectionObserver","entries","visible","entriesLength","index","intersectionRatio","reviewsParameters","dataset","isNationWide","toLowerCase","requestUrl","brandId","marketId","stateName","loadReviewsDetailHtml","disconnect","rootMargin","forEach","element","observe","addEventListener","e"],"mappings":"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","file":"../ratingsandreviews-cfa93e62aa.b1.min.js","sourceRoot":"..","sourcesContent":["(function (global, factory) {\r\n \"use strict\";\r\n if (\"function\" === typeof define && define.amd) {\r\n // If supports for AMD is available return the value to the AMD Loader\r\n // and to the global (window) object in case any JS module.\r\n define([], function () {\r\n return (global.RatingsAndReviews = factory(global));\r\n });\r\n } else if (\"object\" === typeof exports) {\r\n // If supports for Common JS is available export the module\r\n // and pass is value to the global (window) object in case non Common JS code \r\n // is expected to work\r\n module.exports = (global.RatingsAndReviews = factory(global));\r\n } else {\r\n // If not support for AMD or Common JS is available register the module in the global scope.\r\n global.RatingsAndReviews = factory(global);\r\n }\r\n})(\"undefined\" !== typeof window ? window : {}, function (root) {\r\n const reviewsContainer = document.getElementById(\"ratings-and-reviews-container\");\r\n\r\n function makeAjaxCall(methodType, url) {\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.open(methodType, url, true);\r\n \r\n xhr.send();\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n\r\n if (xhr.status === 200) {\r\n showRatingsAndReviews(this.response);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function showRatingsAndReviews(response) {\r\n if (!response) return;\r\n var seeMoreReviewsLink = document.getElementById(\"nhs_seeMoreReviewsLink\");\r\n var json = JSON.parse(response);\r\n var reviewsListContainer = document.getElementById(\"nhs_reviewsList\");\r\n var asideReview = document.querySelector(\".nhs_DetailTrustBuilder > a:last-child\");\r\n var reviewsInfo = document.querySelector(\"[data-builderInfo-reviews]\");\r\n\r\n fillReviewCards(json, seeMoreReviewsLink);\r\n\r\n if (!reviewsListContainer) return;\r\n if (reviewsContainer) {\r\n reviewsContainer.removeAttribute('hidden');\r\n }\r\n if (reviewsInfo) {\r\n reviewsInfo.style.display = \"block\";\r\n }\r\n if (asideReview) {\r\n asideReview.style.visibility = \"visible\";\r\n }\r\n }\r\n\r\n function fillReviewCards(reviews, reviewsLink) {\r\n var reviewCards = document.querySelectorAll('[data-review-card]');\r\n if (reviewCards.length !== 0) {\r\n for (var i = 0; i < reviews.length; i++) {\r\n var userName = reviews[i].IsAnonymous ? \"Anonymous\" : reviews[i].FName + \" \" + reviews[i].LName.charAt(0) + \".\";\r\n var description = reviews[i].Content;\r\n var starsGrade = (reviews[i].GeneralRating / 5 * 100) + \"%\";\r\n var location = reviews[i].CityName + \", \" + reviews[i].StateAbbr;\r\n var startElement = reviewCards[i].querySelector(\".nhs_StarsFilled\");\r\n var descriptionElement = reviewCards[i].querySelector(\"p\");\r\n var infoElements = reviewCards[i].querySelectorAll(\"[data-client-info]\");\r\n var userNameElement;\r\n var locationElement;\r\n\r\n if (infoElements && infoElements.length) {\r\n userNameElement = infoElements[0];\r\n locationElement = infoElements[1];\r\n } \r\n if (startElement) {\r\n startElement.style.width = starsGrade;\r\n }\r\n if (descriptionElement) {\r\n descriptionElement.textContent = description;\r\n }\r\n if (userNameElement) {\r\n userNameElement.textContent = userName;\r\n }\r\n if (locationElement) {\r\n locationElement.textContent = location;\r\n }\r\n if (reviewCards[i].parentElement instanceof HTMLAnchorElement) {\r\n reviewCards[i].parentElement.href = reviewsLink.getAttribute(\"href\");\r\n }\r\n if (reviewCards[i].hasAttribute(\"data-anchor\")) {\r\n reviewCards[i].href = reviewsLink.getAttribute(\"href\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n function loadReviewsDetailHtml() {\r\n var reviewsParameters = document.querySelector('#nhs_reviewsInfo').dataset;\r\n var isNationWide = reviewsParameters.isNationWide.toLowerCase();\r\n var brandId = reviewsParameters.brandId;\r\n\r\n var requestUrl = \"/communitydetail/getdetailreviews?brandId=\" + brandId;\r\n\r\n if (isNationWide === \"false\") {\r\n var marketId = reviewsParameters.marketId;\r\n var stateName = reviewsParameters.stateName;\r\n\r\n requestUrl += \"&statename=\" + stateName + \"&marketid=\" + marketId;\r\n }\r\n makeAjaxCall(\"GET\", requestUrl);\r\n }\r\n\r\n // DOM Complete function to execute the interception observer.\r\n var onDomComplete = function (fn) {\r\n if (document.readyState !== \"complete\") {\r\n document.addEventListener(\"readystatechange\", function (e) {\r\n if (document.readyState === \"complete\") {\r\n fn(e);\r\n }\r\n });\r\n } else {\r\n fn();\r\n }\r\n };\r\n\r\n //Executing function when DOM Complete.\r\n var loadDetailSection = function () {\r\n var callBack = function () {\r\n //Function that will trigger when interaction observer is triggered.\r\n var elementsToObserve = document.querySelectorAll('[data-reviews-observer]');\r\n\r\n if (elementsToObserve.length > 0) {\r\n var ratingsSectionInteraction = function (entries, observer) {\r\n var visible = false;\r\n var entriesLength = entries.length;\r\n for (var index = 0; index < entriesLength; index++) {\r\n if (entries[index].intersectionRatio > 0) { /* if there isn't any interesection do nothing */\r\n visible = true;\r\n break;\r\n }\r\n }\r\n if (visible) {\r\n loadReviewsDetailHtml();\r\n observer.disconnect();//Stop taking care of interaction. \r\n }\r\n };\r\n\r\n let options = {\r\n rootMargin: '100px'\r\n }\r\n\r\n let observer = new IntersectionObserver(ratingsSectionInteraction, options);\r\n\r\n elementsToObserve.forEach((element) => observer.observe(element));\r\n }\r\n }\r\n onDomComplete(callBack);\r\n };\r\n\r\n return {\r\n loadDetailSection: loadDetailSection\r\n };\r\n});"]}