1window.onclick = function (event) { 2 if ( 3 !$(event.target).closest(".modal-content").length && 4 !$(event.target).closest("[data-modal]").length && 5 !$(event.target).closest("[onclick]").length 6 ) { 7 md.close(); 8 } 9 //dropdown 10 if ( 11 !$(event.target).closest("[data-dropdown]").length && 12 !$(event.target).closest(".dropdown").length 13 ) { 14 $(".dropdown").removeClass("open"); 15 } else if ($(event.target).closest("[data-dropdown]").length) { 16 var evt = $(event.target).closest("[data-dropdown]"); 17 $(".dropdown").removeClass("open"); 18 evt.closest(".dropdown").addClass("open"); 19 } 20}; 21var Login = 0, 22 md = { 23 int: function () { 24 $("[data-modal]").click(function (event) { 25 event.preventDefault(); 26 md.close(); 27 $($(this).data("modal")).show(); 28 }); 29 $(".modal .close").click(function (event) { 30 event.preventDefault(); 31 md.close(); 32 }); 33 if ($("#pwd_change").length) { 34 $('input[name="pwd_change"]').change(function () { 35 if ($(this).is(":checked") == true) { 36 $("#pwd_change").show().find("input").attr("required", true); 37 } else { 38 $("#pwd_change").hide().find("input").removeAttr("required"); 39 } 40 }); 41 } 42 }, 43 close: function () { 44 $(".modal").hide(); 45 }, 46 Form: function () { 47 $("[data-action]").unbind("submit"); 48 $("[data-action]").submit(function (event) { 49 let $evt = $(this); 50 let Action = $evt.data("action"); 51 $evt 52 .find("[type='submit']") 53 .prop("disabled", !0) 54 .html('<i class="fa fa-circle-o-notch fa-spin"></i> Waiting...'); 55 $evt.find(".help-block").remove(); 56 $evt.find(".has-error").removeClass("has-error"); 57 58 const Data = new FormData(this); 59 if ($evt.find('input[type="file"]').length > 0) { 60 $.each($evt.find('input[type="file"]'), function (i, tag) { 61 $.each($(tag)[0].files, function (i, file) { 62 Data.append(tag.name, file); 63 }); 64 }); 65 } 66 var error = []; 67 let mLoad = $("#main-loading").length ? 1 : 0; 68 if (mLoad) $("#main-loading").show(); 69 $.ajax({ 70 url: Action + "?__=" + Math.floor(Date.now() / 1000), 71 type: "POST", 72 data: Data, 73 cache: false, 74 processData: false, 75 contentType: false, 76 dataType: "JSON", 77 success: function (t) { 78 if (t.status == 1) { 79 if (t.ajax == "addCart") { 80 $("#order-modal").modal("hide"); 81 $.toast({ 82 heading: "Awesome!", 83 text: "Item has been added to your Cart!", 84 icon: "success", 85 position: "top-right", 86 }); 87 $(".cart-count").text(t.count); 88 return false; 89 } 90 if (t.alert == 1) { 91 alert(t.message); 92 } 93 if (t.url) location.href = t.url; 94 else location.reload(); 95 } else { 96 $.each(t.message, function (k, message) { 97 var block = $evt.find("[name='" + k + "']").parent(); 98 var label = 99 message == 1 100 ? block.find("label").text() + " is required" 101 : message; 102 $evt.find("[name='" + k + "']").addClass("is-invalid"); 103 block.addClass("has-error"); 104 if (block.hasClass("material-field")) block = block.parent(); 105 block.append('<span class="help-block">' + label + "</span>"); 106 $evt.find("[type='submit']").removeAttr("disabled"), 107 $evt.find("[type='submit']").html("Resend"); 108 error.push(label); 109 }); 110 if (mLoad) $("#main-loading").hide(); 111 } 112 }, 113 }), 114 event.preventDefault(); 115 }); 116 }, 117 auth: function () { 118 $.get( 119 "/ajax/session?__=" + Math.floor(Date.now() / 1000), 120 function (j) { 121 if (j.status) { 122 $(".member").addClass("isLogin").html(` 123 <ul> 124 <li class="dropdown"> 125 <a href="#" data-dropdown="true"><i class="fa fa-user-circle"></i><span class="text"> ${j.profile}</span></a> 126 <ul class="menu"> 127 <li><a href="/profile/">${j.profile}</a></li> 128 <li><a href="/following/">${j.following}</a></li> 129 <li><a href="/logout/">${j.logout}</a></li> 130 </ul> 131 </li> 132 <li class="dropdown notify-ui"> 133 <a href="#" onclick="md.notify(1)" data-dropdown="true"><i class="fa fa-bell-o"></i><span data-count="0" class="tbcount">0</span></a> 134 <ul class="w300"> 135 <li class="nodata">${j.nodata}</li> 136 </ul> 137 </li> 138 </ul> 139 `); 140 Login = 1; 141 md.notify(); 142 setInterval(function () { 143 md.notify(); 144 }, 10 * 1000); 145 } 146 }, 147 "json" 148 ); 149 }, 150 notify: function (read) { 151 $.get( 152 "/ajax/notify" + 153 (read == 1 ? ".read" : "") + 154 "?__=" + 155 Math.floor(Date.now() / 1000), 156 function (j) { 157 if (read == 1) { 158 $(".notify-ui") 159 .find(".tbcount") 160 .data("count", 0) 161 .attr("data-count", 0); 162 } else { 163 if (j.status) { 164 $(".notify-ui") 165 .find(".tbcount") 166 .data("count", j.total) 167 .attr("data-count", j.total) 168 .text(j.total > 99 ? "99+" : j.total); 169 $(".notify-ui>ul").html(j.notify); 170 } 171 } 172 }, 173 "json" 174 ); 175 }, 176 follow: function (evt, id) { 177 if (Login == 1) { 178 let rm = Number($(evt).data("remove")); 179 $.post( 180 "/ajax/follow?__=" + Math.floor(Date.now() / 1000), 181 { id, rm }, 182 function (j) { 183 if (j.status) { 184 if (rm == 1) { 185 if ($(evt).data("rm") == 1) { 186 $(evt).closest(".manga").remove(); 187 } else { 188 $(evt) 189 .data("remove", 0) 190 .removeClass("selected") 191 .html('<i class="fa fa-heart-o"></i><span> '+lang[1]+'</span>'); 192 } 193 } else { 194 $(evt) 195 .data("remove", 1) 196 .addClass("selected") 197 .html('<i class="fa fa-heart"></i> <span> '+lang[2]+'</span>'); 198 } 199 } 200 }, 201 "json" 202 ); 203 } else { 204 $("#MLogin").show(); 205 } 206 }, 207 }; 208md.int(); 209md.Form(); 210md.auth();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.