| Index: static/js/uninstalled.js | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/static/js/uninstalled.js | 
| @@ -0,0 +1,93 @@ | 
| + (function() | 
| + { | 
| + var adblockersList = null; | 
| + function toggleView(element) | 
| + { | 
| + var targetId = element.getAttribute("data-toggle-view"); | 
| + if (targetId) | 
| + document.getElementById(targetId).classList.toggle("hidden"); | 
| + } | 
| + | 
| + function checkSelectedAdblocker() | 
| + { | 
| + var selectedOption = adblockersList[adblockersList.selectedIndex]; | 
| + var element = selectedOption.getAttribute("data-show-element"); | 
| + if (element) | 
| + document.getElementById(element).classList.remove("hidden"); | 
| + else | 
| + { | 
| + element = selectedOption.getAttribute("data-hide-element"); | 
| + document.getElementById(element).classList.add("hidden"); | 
| + } | 
| + } | 
| + | 
| + function init() | 
| + { | 
| + var form = document.getElementById("reasons-form"); | 
| + | 
| + // Create hidden input for GET parameters | 
| + window.location.search.substr(1).split("&").forEach(function(param) | 
| + { | 
| + if (!/.=./.test(param)) | 
| + return; | 
| + | 
| + var paramSplit = param.split("="); | 
| + var input = document.createElement("input"); | 
| + input.setAttribute("type", "hidden"); | 
| + input.setAttribute("name", decodeURIComponent(paramSplit[0])); | 
| + input.setAttribute("value", decodeURIComponent(paramSplit[1])); | 
| + form.appendChild(input); | 
| + }); | 
| + | 
| + // Randomly add reasons | 
| + var reasonsContainer = document.getElementById("reasons"); | 
| + var reasons = document.querySelectorAll("#reasons > li"); | 
| + reasons = Array.prototype.slice.call(reasons); | 
| + reasonsContainer.innerHTML = ""; | 
| + while (reasons.length) | 
| + { | 
| + var randomIndex = Math.floor(Math.random() * (reasons.length -1)); | 
| + var reasonElement = reasons.splice(randomIndex, 1)[0]; | 
| + reasonsContainer.appendChild(reasonElement); | 
| + var checkbox = reasonElement.querySelector("input[type=checkbox]"); | 
| + if (checkbox.checked) | 
| + toggleView(checkbox); | 
| + | 
| + checkbox.addEventListener("change", function(event) | 
| + { | 
| + toggleView(event.target); | 
| + }, false); | 
| + } | 
| + | 
| + adblockersList = document.querySelector("#adblockers select"); | 
| + adblockersList.addEventListener("change", function() | 
| + { | 
| + checkSelectedAdblocker(); | 
| + }, false); | 
| + checkSelectedAdblocker(); | 
| + | 
| + var reasonOtherInput = document.getElementById("reason-other-input"); | 
| + var maxLength = reasonOtherInput.getAttribute("maxlength"); | 
| + var charCounter = document.getElementById("characters-countdown"); | 
| + charCounter.textContent = maxLength; | 
| + reasonOtherInput.addEventListener("keyup", function() | 
| + { | 
| + charCounter.textContent = maxLength - reasonOtherInput.value.length; | 
| + }, false); | 
| + | 
| + var submitButton = document.getElementById("reason-submit"); | 
| + submitButton.addEventListener("click", function(event) | 
| + { | 
| + if (!document.querySelector("ul input:checked")) | 
| + { | 
| + event.preventDefault(); | 
| + form.setAttribute("class", "error"); | 
| + } | 
| + else | 
| + { | 
| + form.submit(); | 
| + } | 
| + }, false); | 
| + } | 
| + document.addEventListener("DOMContentLoaded", init, false); | 
| + })(); |