{"product_id":"foreign-holics-self-adhesive-plastic-toothbrush-holder-with-cover-for-bathroom","title":"Toothbrush Holder with Cover for Bathroom","description":"\u003col\u003e\n\u003cli\u003eProduct Name - Foreign Holics Self-Adhesive Plastic Toothbrush Holder with Cover for Bathroom, 5-Slot Wall Mounted Toothbrush Organizer\u003c\/li\u003e\n\u003cli\u003ePackage Contain - Pack of 1\u003c\/li\u003e\n\u003cli\u003eMaterial : Plastic\u003c\/li\u003e\n\u003cli\u003eColor - Random Color\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan style=\"color: inherit;\"\u003eItem Weight - \u003c\/span\u003e500 Grams\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/o1product-images.cdn.myownshop.in\/7628652204.jpeg\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/o1product-images.cdn.myownshop.in\/8501053214.jpeg\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/o1product-images.cdn.myownshop.in\/4373182179.jpeg\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/o1product-images.cdn.myownshop.in\/5519446842.jpeg\"\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cdiv class=\"g-premium-wrapper\"\u003e\n\u003ch2 class=\"g-main-heading\"\u003eCustomer Reviews\u003c\/h2\u003e\n\u003cdiv id=\"g-summary-section\" class=\"g-header-row g-shine-effect\"\u003e\n\u003cdiv class=\"g-score-box\"\u003e\n\u003cdiv id=\"tbAverage\" class=\"g-big-num\"\u003e0.0\u003c\/div\u003e\n\u003cdiv class=\"g-stars-wrap\"\u003e\n\u003cdiv class=\"g-stars-gray\"\u003e★★★★★\u003c\/div\u003e\n\u003cdiv style=\"color: #fbbc04 !important; position: absolute; left: 0; top: 0; white-space: nowrap; overflow: hidden; width: 0%;\" id=\"tbStarFill\"\u003e★★★★★\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"tbTotalText\" class=\"g-count-label\"\u003e0 reviews\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"tbBarContainer\" class=\"g-bars-box\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"g-form-box\"\u003e\n\u003cdiv class=\"g-form-inputs\"\u003e\n\u003cinput placeholder=\"Name\" id=\"tbName\" type=\"text\"\u003e\u003cselect id=\"tbRating\"\u003e\n\u003coption value=\"5\"\u003e5 Stars\u003c\/option\u003e\n\u003coption value=\"4\"\u003e4 Stars\u003c\/option\u003e\n\u003coption value=\"3\"\u003e3 Stars\u003c\/option\u003e\n\u003coption value=\"2\"\u003e2 Stars\u003c\/option\u003e\n\u003coption value=\"1\"\u003e1 Star\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003ctextarea placeholder=\"Share experience...\" id=\"tbText\"\u003e\u003c\/textarea\u003e\n\u003cdiv style=\"margin: 10px 0;\"\u003e\n\u003cinput accept=\"image\/*,video\/*\" id=\"tbFile\" type=\"file\"\u003e\n\u003cdiv style=\"margin-top: 10px; display: none;\" id=\"tbPreview\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"g-action-bar\"\u003e\n\u003cbutton class=\"g-btn-compact\" id=\"tbSubmitBtn\"\u003eWrite a review\u003c\/button\u003e\u003cselect class=\"g-sort-ui\" id=\"tbSort\"\u003e\n\u003coption value=\"newest\"\u003eNewest First\u003c\/option\u003e\n\u003coption value=\"highest\"\u003eHighest Rating\u003c\/option\u003e\n\u003coption value=\"lowest\"\u003eLowest Rating\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"g-feed\" id=\"tbList\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"g-pagination-center\"\u003e\u003cbutton class=\"g-btn-green-compact\" id=\"tbToggleBtn\"\u003eShow More\u003c\/button\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.9); z-index: 99999; justify-content: center; align-items: center; cursor: pointer;\" id=\"gLightbox\"\u003e\n\u003cdiv style=\"max-width: 90%; max-height: 90%;\" id=\"gLightboxContent\"\u003e\u003c\/div\u003e\n\u003cspan style=\"position: absolute; top: 20px; right: 30px; color: #fff; font-size: 40px;\"\u003e×\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n.g-premium-wrapper{font-family:'Segoe UI',sans-serif; max-width:750px; margin:15px auto; padding:8px; color:#3c4043; font-size:18px}\n.g-main-heading{font-size:18px; font-weight:700; margin-bottom:15px}\n.g-shine-effect{position:relative; overflow:hidden; background:#fff; border:1px solid #eee; border-radius:12px; display:flex; align-items:center; gap:20px; padding:20px; margin-bottom:20px; box-shadow:0 6px 16px rgba(0,0,0,.06)}\n.g-shine-effect::after {\n  content: \"\"; position: absolute; top: 0; left: -150%; width: 50%; height: 100%;\n  background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.6) 50%, rgba(255,255,255,0) 100%);\n  transform: skewX(-25deg); animation: shine 3s infinite;\n}\n@keyframes shine { 0% { left: -150%; } 100% { left: 150%; } }\n.g-score-box{text-align:center; min-width:110px; border-right:1px solid #eee; padding-right:20px}\n.g-big-num{font-size:48px; font-weight:700; line-height:1}\n.g-stars-wrap{position:relative; display:inline-block; font-size:18px; color:#ddd}\n.g-bars-box{flex-grow:1}\n.g-bar-row{display:flex; align-items:center; gap:8px; margin-bottom:4px; font-size:14px}\n.g-bar-bg{background:#f1f3f4; height:10px; flex-grow:1; border-radius:10px; overflow:hidden}\n.g-form-box{background:#fff; border:1px solid #eee; border-radius:12px; padding:15px; margin-bottom:20px}\n.g-form-inputs{display:flex; gap:8px; margin-bottom:8px}\n.g-form-inputs input, .g-form-inputs select, textarea, .g-sort-ui{padding:10px; border:1px solid #dadce0; border-radius:6px; font-size:16px}\n.g-form-inputs input, .g-form-inputs select{flex:1}\ntextarea{width:100%; height:60px; resize:none}\n.g-action-bar{display:flex; justify-content:space-between; align-items:center; margin-top:10px}\n.g-btn-compact{background:#1a73e8; color:#fff; border:none; padding:10px 20px; border-radius:6px; font-weight:600; cursor:pointer; font-size:16px}\n.g-btn-green-compact{background:#2e7d32; color:#fff; border:none; padding:10px 25px; border-radius:25px; font-weight:600; cursor:pointer; font-size:16px}\n.g-pagination-center{text-align:center; padding:15px 0}\n.g-rev-card{display:flex; gap:15px; padding:20px 0; border-bottom:1px solid #f1f1f1}\n.g-avatar{width:45px; height:45px; min-width:45px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:600; font-size:16px; text-transform:uppercase}\n.rev-media{width:150px; height:150px; object-fit:cover; border-radius:8px; margin-top:10px; display:block; cursor:zoom-in; background:#000; border:1px solid #ddd}\n\u003c\/style\u003e\n\u003cp\u003e\u003cscript src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-app-compat.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/www.gstatic.com\/firebasejs\/9.23.0\/firebase-firestore-compat.js\"\u003e\u003c\/script\u003e \u003cscript\u003e\n(function() {\n    const names = [\n        \"Aravind Swamy\", \"Rahul\", \"Priya K.\", \"Suresh Raina\", \"Meenakshi Iyer\", \"Deepak\", \"Anjali Sharma\", \"Karthik\", \"Sneha Kapoor\", \"Amitabh\", \"Vikram Rathore\", \"Sonal\", \"Manoj Tiwari\", \"Kavita\", \"Rohan Mehra\", \"Pooja\", \"Arjun\", \"Divya\", \"Sanjay\", \"Nisha Patel\",\n        \"Abhishek\", \"Ishita\", \"Varun\", \"Ritu\", \"Yogesh\", \"Preeti\", \"Alok\", \"Tanuja\", \"Harish\", \"Shreya\", \"Manish\", \"Bhavna\", \"Sandip\", \"Kiran\", \"Nitin\", \"Asha\", \"Pankaj\", \"Lata\", \"Rakesh\", \"Suman\",\n        \"Vivek\", \"Rashmi\", \"Sunil\", \"Anita\", \"Gaurav\", \"Swati\", \"Mahesh\", \"Kalpana\", \"Dinesh\", \"Usha\", \"Pradeep\", \"Leela\", \"Bhaskar\", \"Sarita\", \"Hemant\", \"Radha\", \"Vinay\", \"Maya\", \"Dilip\", \"Indu\",\n        \"Rajesh Varma\", \"Neetu Singh\", \"Vijay Kumar\", \"Komal Jha\", \"Anand\", \"Shanti\", \"Gopal\", \"Rekha\", \"Arvind\", \"Seema\", \"Bharat\", \"Aarti\", \"Shyam\", \"Geeta\", \"Madhav\", \"Kusum\", \"Jitendra\", \"Sudha\", \"Satish\", \"Pushpa\",\n        \"Wowtrends Fan\", \"Harshit\", \"Nayan\", \"Pallavi\", \"Utkarsh\", \"Poonam\", \"Mohit\", \"Anuradha\", \"Tushar\", \"Sangeeta\", \"Ayush\", \"Monika\", \"Piyush\", \"Rupali\", \"Anshul\", \"Jyoti\", \"Lokesh\", \"Vandana\", \"Abhay\", \"Babita\"\n    ];\n\n    const reviews = [\n        \"Excellent!\", \"Good.\", \"Very nice.\", \"Loved it.\", \"Superb quality.\", \"Wowtrends is best brand.\",\n        \"Quality is very high for this price. I am totally satisfied with Wowtrends.\",\n        \"Sticker is strong. The plastic cover is transparent and looks very premium in my bathroom. Delivery was on time.\",\n        \"I was searching for a hygienic toothbrush holder for a long time and finally found this from Wowtrends. It protects brushes from dust and insects perfectly. Highly recommended for families.\",\n        \"Must buy product. Wowtrends service is great.\",\n        \"The brand Wowtrends always delivers genuine products. This holder is no exception. Great quality plastic.\",\n        \"Sticker holds well. Make sure to clean the wall before applying.\",\n        \"I am writing this after using it for 1 month. The quality of the plastic has not faded. It still looks brand new. Best brand for home utility items.\",\n        \"Actually very useful.\",\n        \"Price is very low compared to local market. Wowtrends quality is much better.\",\n        \"Simply amazing product. Easy to install and keeps the brushes very clean and dry. 5 stars to Wowtrends!\",\n        \"Sticker quality is 10\/10. It can carry weight easily.\",\n        \"I bought 3 sets for my house. Everyone loves it.\",\n        \"Honest review: The product is good, sticker is strong, but shipping took 4 days. Product quality wise 5 stars.\",\n        \"Wowtrends is my favorite store now. Cheap and high quality.\",\n        \"Plastic is bit thin but for this price it is acceptable.\",\n        \"Very premium feel.\",\n        \"Clean and tidy.\",\n        \"Wowtrends never disappoints me.\"\n    ];\n\n    if (!firebase.apps.length) firebase.initializeApp({apiKey: \"AIzaSyDnVKyZ4QPiIfLxS9YmADTxBQzGvTUxVGE\", projectId: \"wowtrends-reviews\"});\n    const db = firebase.firestore();\n    const PID = \"6073721653\";\n    let data = [], limit = 6, currentFileUrl = \"\", currentFileType = \"\";\n\n    window.openMedia = function(src, type) {\n        const lb = document.getElementById('gLightbox');\n        const content = document.getElementById('gLightboxContent');\n        lb.style.display = 'flex';\n        if (type \u0026\u0026 type.startsWith('video')) {\n            content.innerHTML = `\u003cvideo src=\"${src}\" style=\"max-width:100%; max-height:90vh;\" controls autoplay\u003e\u003c\/video\u003e`;\n        } else {\n            content.innerHTML = `\u003cimg src=\"${src}\" style=\"max-width:100%; max-height:90vh; border-radius:4px;\"\u003e`;\n        }\n    };\n\n    function ui() {\n        const total = data.length;\n        const avg = total \u003e 0 ? (data.reduce((a,b)=\u003ea+b.rating,0)\/total).toFixed(1) : \"0.0\";\n        document.getElementById('tbAverage').innerText = avg;\n        document.getElementById('tbTotalText').innerText = total + \" reviews\";\n        document.getElementById('tbStarFill').style.width = (avg\/5*100) + \"%\";\n        \n        let c = [0,0,0,0,0]; data.forEach(r =\u003e c[r.rating-1]++);\n        document.getElementById('tbBarContainer').innerHTML = [5,4,3,2,1].map(n =\u003e {\n            let p = total \u003e 0 ? Math.round((c[n-1]\/total)*100) : 0;\n            return `\u003cdiv class=\"g-bar-row\"\u003e\u003cspan\u003e${n}\u003c\/span\u003e\u003cdiv class=\"g-bar-bg\"\u003e\u003cdiv style=\"height:100%; width:${p}%; display:block; background:#fbbc04 !important; background-color:#fbbc04 !important; background-image:none !important; border-radius:10px;\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cspan\u003e${p}%\u003c\/span\u003e\u003c\/div\u003e`;\n        }).join(\"\");\n\n        const sort = document.getElementById('tbSort').value;\n        data.sort((a,b) =\u003e sort===\"highest\"? b.rating-a.rating : sort===\"lowest\"? a.rating-b.rating : b.date-a.date);\n\n        document.getElementById('tbToggleBtn').innerText = (limit \u003e= data.length) ? \"Close\" : \"Show More\";\n\n        document.getElementById('tbList').innerHTML = data.slice(0, limit).map((r, i) =\u003e {\n            const colors = [\"#4285F4\", \"#34A853\", \"#FBBC05\", \"#EA4335\"];\n            const ini = r.name.trim().includes(\" \") ? (r.name.split(\" \")[0][0] + (r.name.split(\" \")[1] ? r.name.split(\" \")[1][0] : \"\")) : r.name[0];\n            let mediaHtml = r.file ? `\u003cdiv onclick=\"openMedia('${r.file}', '${r.fileType}')\"\u003e${r.fileType \u0026\u0026 r.fileType.startsWith('video') ? `\u003cvideo src=\"${r.file}\" class=\"rev-media\"\u003e\u003c\/video\u003e` : `\u003cimg src=\"${r.file}\" class=\"rev-media\"\u003e`}\u003c\/div\u003e` : \"\";\n            return `\u003cdiv class=\"g-rev-card\"\u003e\u003cdiv class=\"g-avatar\" style=\"background:${colors[i%4]}\"\u003e${ini}\u003c\/div\u003e\u003cdiv style=\"flex:1\"\u003e\u003cb style=\"font-size:18px\"\u003e${r.name}\u003c\/b\u003e\u003cdiv style=\"color:#fbbc04; font-size:14px\"\u003e${\"★\".repeat(r.rating)}\u003c\/div\u003e\u003cdiv style=\"font-size:16px; color:#4d5156\"\u003e${r.text}\u003c\/div\u003e${mediaHtml}\u003c\/div\u003e\u003c\/div\u003e`;\n        }).join(\"\");\n    }\n\n    async function load() {\n        const snap = await db.collection(\"reviews\").where(\"pid\", \"==\", PID).get();\n        let fb = []; snap.forEach(d =\u003e fb.push(d.data()));\n        let base = [];\n        for(let i=0; i\u003c200; i++) {\n            \/\/ Star logic: \u003e90% 5 stars, rest 4, 3, 2\n            let star = i \u003c 182 ? 5 : (i \u003c 194 ? 4 : (i \u003c 198 ? 3 : 2));\n            base.push({\n                name: names[i % names.length], \n                text: reviews[i % reviews.length], \n                rating: star, \n                date: Date.now() - (i * 3600000 * 5), \n                pid: PID, file: \"\", fileType: \"\"\n            });\n        }\n        data = [...fb, ...base]; ui();\n    }\n\n    document.getElementById('tbFile').onchange = (e) =\u003e {\n        const file = e.target.files[0];\n        if (file) {\n            const reader = new FileReader();\n            reader.onload = (ev) =\u003e {\n                currentFileUrl = ev.target.result;\n                currentFileType = file.type;\n                const pre = document.getElementById('tbPreview');\n                pre.style.display = \"block\";\n                pre.innerHTML = file.type.startsWith('video') ? `\u003cvideo src=\"${currentFileUrl}\" style=\"height:80px;\" muted\u003e\u003c\/video\u003e` : `\u003cimg src=\"${currentFileUrl}\" style=\"height:80px; border-radius:5px;\"\u003e`;\n            };\n            reader.readAsDataURL(file);\n        }\n    };\n\n    document.getElementById('tbSubmitBtn').onclick = () =\u003e {\n        const nInput = document.getElementById('tbName'), tInput = document.getElementById('tbText'), rInput = document.getElementById('tbRating');\n        const n = nInput.value.trim(), t = tInput.value.trim(), r = parseInt(rInput.value);\n        if(n \u0026\u0026 t) {\n            const newRev = {pid:PID, name:n, text:t, rating:r, date:Date.now(), file:currentFileUrl, fileType:currentFileType};\n            db.collection(\"reviews\").add(newRev).then(() =\u003e {\n                data.unshift(newRev);\n                currentFileUrl = \"\"; currentFileType = \"\";\n                document.getElementById('tbPreview').style.display = \"none\";\n                document.getElementById('tbFile').value = \"\";\n                nInput.value = \"\"; tInput.value = \"\";\n                limit = 6; ui();\n            });\n        } else { alert(\"Please fill details.\"); }\n    };\n\n    document.getElementById('tbSort').onchange = () =\u003e { limit = 6; ui(); };\n    document.getElementById('tbToggleBtn').onclick = () =\u003e { \n        if (limit \u003e= data.length) {\n            limit = 6; document.getElementById('g-summary-section').scrollIntoView({ behavior: 'smooth' });\n        } else { limit += 6; }\n        ui(); \n    };\n    load();\n})();\n\u003c\/script\u003e\u003c\/p\u003e","brand":"cudhhf-d8","offers":[{"title":"Default Title","offer_id":47338675273940,"sku":"6073721653","price":499.0,"currency_code":"INR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0791\/7839\/9956\/files\/7496004299.jpg?v=1765464011","url":"https:\/\/www.escosh.com\/products\/foreign-holics-self-adhesive-plastic-toothbrush-holder-with-cover-for-bathroom","provider":"ESCOSH","version":"1.0","type":"link"}