OLD | NEW |
1 (function() | 1 (function() |
2 { | 2 { |
| 3 function addListener(obj, type, listener, useCapture) |
| 4 { |
| 5 if ("addEventListener" in obj) |
| 6 { |
| 7 obj.addEventListener(type, function(ev) |
| 8 { |
| 9 if (listener(ev) === false) |
| 10 ev.preventDefault(); |
| 11 }, useCapture); |
| 12 } |
| 13 else |
| 14 { |
| 15 // IE 8 |
| 16 if (type == "DOMContentLoaded") |
| 17 type = "readystatechange"; |
| 18 |
| 19 type = "on" + type; |
| 20 if ("attachEvent" in obj) |
| 21 { |
| 22 obj.attachEvent(type, function() |
| 23 { |
| 24 if (document.readyState == "complete" && listener(event) === false) |
| 25 event.returnValue = false; |
| 26 }); |
| 27 } |
| 28 else |
| 29 { |
| 30 obj[type] = listener; |
| 31 } |
| 32 } |
| 33 } |
| 34 |
| 35 function addPlaceholder(textbox) |
| 36 { |
| 37 textbox.setAttribute("class", "placeholder"); |
| 38 textbox.value = getPlaceholderText(textbox); |
| 39 } |
| 40 |
| 41 function getPlaceholderText(textbox) |
| 42 { |
| 43 return textbox.getAttribute("placeholder"); |
| 44 } |
| 45 |
| 46 function initSubscriptionForm(subscriptionElement) |
| 47 { |
| 48 var emailTextbox = subscriptionElement.getElementsByClassName("subscribe-tex
tbox")[0]; |
| 49 |
| 50 // IE9 + Safari iOS |
| 51 if (!("placeholder" in document.createElement("input")) |
| 52 && !emailTextbox.value) |
| 53 { |
| 54 addPlaceholder(emailTextbox); |
| 55 addListener(emailTextbox, "focus", function() |
| 56 { |
| 57 if (emailTextbox.value == getPlaceholderText(textbox)) |
| 58 { |
| 59 emailTextbox.value = ""; |
| 60 emailTextbox.setAttribute("class", ""); |
| 61 } |
| 62 }, false); |
| 63 |
| 64 addListener(emailTextbox, "blur", function() |
| 65 { |
| 66 if (!emailTextbox.value) |
| 67 addPlaceholder(emailTextbox); |
| 68 }, false); |
| 69 } |
| 70 |
| 71 var formElement = subscriptionElement.getElementsByTagName("form")[0]; |
| 72 addListener(formElement, "submit", function() |
| 73 { |
| 74 if (!window.XMLHttpRequest) |
| 75 { |
| 76 formElement.submit(); |
| 77 return false; |
| 78 } |
| 79 |
| 80 var inputs = formElement.getElementsByTagName("input"); |
| 81 var params = ""; |
| 82 for (var i = 0; i < inputs.length; i++) |
| 83 { |
| 84 if (params) |
| 85 params += "&"; |
| 86 params += inputs[i].name + "=" + encodeURIComponent(inputs[i].value); |
| 87 } |
| 88 var request = new XMLHttpRequest(); |
| 89 request.open("POST", "/submitEmail", true); |
| 90 request.setRequestHeader("Content-Type", "application/x-www-form-urlencode
d"); |
| 91 addListener(request, "readystatechange", function() |
| 92 { |
| 93 if (request.readyState == 4) |
| 94 { |
| 95 if (request.status >= 200 && request.status < 300) |
| 96 { |
| 97 formElement.setAttribute("class", "success"); |
| 98 } |
| 99 else if (request.status == 400) |
| 100 { |
| 101 formElement.setAttribute("class", "invalid"); |
| 102 } |
| 103 else |
| 104 { |
| 105 var errorWrapper = document.getElementById("response-error"); |
| 106 if ("textContent" in errorWrapper) |
| 107 errorWrapper.textContent = request.statusText; |
| 108 else // IE8 |
| 109 errorWrapper.innerText = request.statusText; |
| 110 |
| 111 formElement.setAttribute("class", "error"); |
| 112 } |
| 113 } |
| 114 }, false); |
| 115 request.send(params); |
| 116 return false; |
| 117 }, false); |
| 118 } |
| 119 |
3 var visibleTab; | 120 var visibleTab; |
4 var container; | 121 var container; |
5 | 122 |
6 window.toggleMore = function() | 123 window.toggleMore = function() |
7 { | 124 { |
8 if (container.className == "hidden") | 125 if (container.className == "hidden") |
9 container.className = visibleTab || getDefaultTab(); | 126 container.className = visibleTab || getDefaultTab(); |
10 else | 127 else |
11 container.className = "hidden"; | 128 container.className = "hidden"; |
12 } | 129 } |
13 | 130 |
14 window.showTab = function(button) | 131 window.showTab = function(button) |
15 { | 132 { |
16 var id = button.id.substr(5); | 133 var id = button.id.substr(5); |
17 container.className = id; | 134 container.className = id; |
18 visibleTab = id; | 135 visibleTab = id; |
19 } | 136 } |
20 | 137 |
21 function getDefaultTab() | 138 function getDefaultTab() |
22 { | 139 { |
23 var content = document.getElementById("content"); | 140 var content = document.getElementById("content"); |
24 var ua = content.className.match(/ua\-([^\s]+)/); | 141 var ua = content.className.match(/ua\-([^\s]+)/); |
25 visibleTab = ua && ua[1] || "firefox"; | 142 visibleTab = ua && ua[1] || "firefox"; |
26 return visibleTab; | 143 return visibleTab; |
27 } | 144 } |
28 | 145 |
29 function init() | 146 function init() |
30 { | 147 { |
31 container = document.getElementById("more-container"); | 148 container = document.getElementById("more-container"); |
| 149 initSubscriptionForm(document.getElementById("edge-subscription")); |
32 } | 150 } |
33 | 151 |
34 init(); | 152 init(); |
35 })(); | 153 })(); |
OLD | NEW |