1if (typeof k42 == "undefined") {k42 = false;} 2if (k42 == true) { 3 var k42ResizeFunc; 4 function k42Resizing() { 5 clearTimeout(k42ResizeFunc); 6 k42ResizeFunc = setTimeout(browserResize, 500); 7 } 8 9 if (window.addEventListener) { 10 window.addEventListener("resize", k42Resizing); 11 } else if (window.attachEvent) { 12 window.attachEvent("resize", k42Resizing); 13 } 14} else { 15 if (window.addEventListener) { 16 window.addEventListener("resize", browserResize); 17 } else if (window.attachEvent) { 18 window.attachEvent("onresize", browserResize); 19 } 20} 21var xbeforeResize = window.innerWidth; 22var ybeforeResize = window.innerWidth; 23var zbeforeResize = window.innerWidth; 24var sbeforeResize = window.innerWidth; 25var abeforeResize = window.innerWidth; 26var allbeforeResize = window.innerWidth; 27function skyscraperResize() { 28 if (k42 == true) { 29 30 } else { 31 if (window.innerWidth < 975 + 17 && document.getElementById("div-gpt-ad-1422003450156-5")) { 32 document.getElementById("div-gpt-ad-1422003450156-5").style.minHeight="0"; 33 } 34 } 35} 36function browserResize() { 37 if (allbeforeResize == window.innerWidth) { return false; } 38 allbeforeResize = window.innerWidth; 39 if (k42 == true) { 40 if (Number(w3_getStyleValue(document.getElementById("main"), "height").replace("px", "")) > 2200) { 41 42 } 43 else { 44 45 } 46 } else { 47 var afterResize = window.innerWidth; 48 if ((xbeforeResize < (1482 + 14) && afterResize >= (1482 + 14)) || (xbeforeResize >= (1482 + 14) && afterResize < (1482 + 14)) || 49 (xbeforeResize < (732 + 14) && afterResize >= (732 + 14)) || (xbeforeResize >= (732 + 14) && afterResize < (732 + 14)) || 50 (xbeforeResize < (512 + 17) && afterResize >= (512 + 17)) ||(xbeforeResize >= (512 + 17) && afterResize < (512 + 17))) { 51 xbeforeResize = afterResize; 52 // g o o g l e t a g . p u b a d s ( ) . r e f r e s h ( [ g p t A d S l o t s [ 0 ] ] ); 53 } 54 if ((ybeforeResize < (1683 + 14) && afterResize >= (1683 + 14)) || (ybeforeResize >= (1683 + 14) && afterResize < (1683 + 14)) || 55 (ybeforeResize < (1108 + 14) && afterResize >= (1108 + 14)) || (ybeforeResize >= (1108 + 14) && afterResize < (1108 + 14)) || 56 (ybeforeResize < (983 + 17) && afterResize >= (983 + 17)) || (ybeforeResize >= (983 + 17) && afterResize < (983 + 17))) { 57 ybeforeResize = afterResize; 58 skyscraperResize() 59 60 } 61 if ((zbeforeResize < (1272 + 14) && afterResize >= (1272 + 14)) || (zbeforeResize >= (1272 + 14) && afterResize < (1272 + 14))) { 62 zbeforeResize = afterResize; 63 64 } 65 if ((sbeforeResize < (1683 + 14) && afterResize >= (1683 + 14)) || (sbeforeResize >= (1683 + 14) && afterResize < (1683 + 14)) || 66 (sbeforeResize < (1108 + 14) && afterResize >= (1108 + 14)) || (sbeforeResize >= (1108 + 14) && afterResize < (1108 + 14)) || 67 (sbeforeResize < (983 + 17) && afterResize >= (983 + 17)) || (sbeforeResize >= (983 + 17) && afterResize < (983 + 17))) { 68 sbeforeResize = afterResize; 69 70 } 71 if ((abeforeResize < (1472 + 14) && afterResize >= (1472 + 14)) || (abeforeResize >= (1472 + 14) && afterResize < (1472 + 14)) || 72 (abeforeResize < (1167 + 14) && afterResize >= (1167 + 14)) || (abeforeResize >= (1167 + 14) && afterResize < (1167 + 14)) || 73 (abeforeResize < (1025 + 14) && afterResize >= (1025 + 14)) || (abeforeResize >= (1025 + 14) && afterResize < (1025 + 14)) || 74 (abeforeResize < (782 + 14) && afterResize >= (782 + 14)) || (abeforeResize >= (782 + 14) && afterResize < (782 + 14)) || 75 (abeforeResize < (522 + 17) && afterResize >= (522 + 17)) || (abeforeResize >= (522 + 17) && afterResize < (522 + 17))) { 76 abeforeResize = afterResize; 77 78 } 79 } 80} 81skyscraperResize(); 82function open_menu() { 83 var x, m; 84 m = (document.getElementById("leftmenu") || document.getElementById("sidenav")); 85 if (m.style.display == "block") { 86 close_menu(); 87 } else { 88 w3_close_all_nav(); 89 m.style.display = "block"; 90 if (document.getElementsByClassName) { 91 x = document.getElementsByClassName("chapter") 92 for (i = 0; i < x.length; i++) { 93 x[i].style.visibility = "hidden"; 94 } 95 x = document.getElementsByClassName("nav") 96 for (i = 0; i < x.length; i++) { 97 x[i].style.visibility = "hidden"; 98 } 99 x = document.getElementsByClassName("sharethis") 100 for (i = 0; i < x.length; i++) { 101 x[i].style.visibility = "hidden"; 102 } 103 } 104 fix_sidemenu(); 105 } 106} 107function close_menu() { 108 var m; 109 m = (document.getElementById("leftmenu") || document.getElementById("sidenav")); 110 m.style.display = "none"; 111 if (document.getElementsByClassName) { 112 x = document.getElementsByClassName("chapter") 113 for (i = 0; i < x.length; i++) { 114 x[i].style.visibility = "visible"; 115 } 116 x = document.getElementsByClassName("nav") 117 for (i = 0; i < x.length; i++) { 118 x[i].style.visibility = "visible"; 119 } 120 x = document.getElementsByClassName("sharethis") 121 for (i = 0; i < x.length; i++) { 122 x[i].style.visibility = "visible"; 123 } 124 } 125} 126if (window.addEventListener) { 127 window.addEventListener("scroll", function () {fix_sidemenu(); }); 128 window.addEventListener("resize", function () {fix_sidemenu(); }); 129 window.addEventListener("touchmove", function () {fix_sidemenu(); }); 130 window.addEventListener("load", function () {fix_sidemenu(); }); 131} else if (window.attachEvent) { 132 window.attachEvent("onscroll", function () {fix_sidemenu(); }); 133 window.attachEvent("onresize", function () {fix_sidemenu(); }); 134 window.attachEvent("ontouchmove", function () {fix_sidemenu(); }); 135 window.attachEvent("onload", function () {fix_sidemenu(); }); 136} 137function fix_sidemenu() { 138 var w, top; 139 w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 140 top = scrolltop() 141/* if (w < 993 && w > 600) { 142 if (top == 0) { 143 document.getElementById("sidenav").style.top = "144px"; 144 } 145 if (top > 0 && top < 100) { 146 document.getElementById("sidenav").style.top = (144 - top) + "px"; 147 } 148 if (top > 100) { 149 document.getElementById("sidenav").style.top = document.getElementById("topnav").offsetHeight + "px"; 150 document.getElementById("belowtopnav").style.paddingTop = "44px"; 151 document.getElementById("topnav").style.position = "fixed"; 152 document.getElementById("topnav").style.top = "0"; 153 document.getElementById("googleSearch").style.position = "fixed"; 154 document.getElementById("googleSearch").style.top = "0"; 155 document.getElementById("google_translate_element").style.position = "fixed"; 156 document.getElementById("google_translate_element").style.top = "0"; 157 } else { 158 document.getElementById("belowtopnav").style.paddingTop = "0"; 159 document.getElementById("topnav").style.position = "relative"; 160 document.getElementById("googleSearch").style.position = "absolute"; 161 document.getElementById("googleSearch").style.top = ""; 162 document.getElementById("google_translate_element").style.position = "absolute"; 163 document.getElementById("google_translate_element").style.top = ""; 164 } 165 document.getElementById("leftmenuinner").style.paddingTop = "0"; 166 } else {*/ 167 168 169 if (top == 0) { 170 document.getElementById("sidenav").style.top = "112px"; 171 } 172 if (top > 0 && top < 66) { 173 document.getElementById("sidenav").style.top = (112 - top) + "px"; 174 } 175 if (top > 66) { 176 document.getElementById("sidenav").style.top = "44px"; 177 if (w > 992) {document.getElementById("leftmenuinner").style.paddingTop = "44px";} 178 document.getElementById("belowtopnav").style.paddingTop = "44px"; 179 document.getElementById("topnav").style.position = "fixed"; 180 document.getElementById("topnav").style.top = "0"; 181 document.getElementById("googleSearch").style.position = "fixed"; 182 document.getElementById("googleSearch").style.top = "0"; 183 document.getElementById("google_translate_element").style.position = "fixed"; 184 document.getElementById("google_translate_element").style.top = "0"; 185 } else { 186 if (w > 992) { 187 document.getElementById("leftmenuinner").style.paddingTop = (112 - top) + "px"; 188 } else { //ELSEN ER NY 189 document.getElementById("leftmenuinner").style.paddingTop = 0; 190 } 191 document.getElementById("belowtopnav").style.paddingTop = "0"; 192 document.getElementById("topnav").style.position = "relative"; 193 document.getElementById("googleSearch").style.position = "absolute"; 194 document.getElementById("googleSearch").style.top = ""; 195 document.getElementById("google_translate_element").style.position = "absolute"; 196 document.getElementById("google_translate_element").style.top = ""; 197 } 198/* }*/ 199}
200function sidemenuitemintoview() { 201 var a, b, i = 0; 202 a = document.getElementById("leftmenuinnerinner"); 203 if (!a || !a.getElementsByClassName) {return false;} 204 b = a.getElementsByClassName("active"); 205 if (b.length < 1) {return false;} 206 while (!isIntoView(a, b[0])) { 207 i++ 208 if (i > 1000) {break;} 209 a.scrollTop += 10; 210 } 211} 212function isIntoView(x, y) { 213 var a = x.scrollTop; 214 var b = a + window.innerHeight; 215 var ytop = y.offsetTop; 216 var ybottom = ytop + 140; 217 return ((ybottom <= b) && (ytop >= a)); 218} 219function scrolltop() { 220 var top = 0; 221 if (typeof(window.pageYOffset) == "number") { 222 top = window.pageYOffset; 223 } else if (document.body && document.body.scrollTop) { 224 top = document.body.scrollTop; 225 } else if (document.documentElement && document.documentElement.scrollTop) { 226 top = document.documentElement.scrollTop; 227 } 228 return top; 229} 230function open_translate(elmnt) { 231 var a = document.getElementById("google_translate_element"); 232 if (a.style.display == "") { 233 a.style.display = "none"; 234 elmnt.innerHTML = ""; 235 } else { 236 a.style.display = ""; 237 if (window.innerWidth > 500) { 238 a.style.width = "40%"; 239 } else { 240 a.style.width = "100%"; 241 } 242 elmnt.innerHTML = "<span style='font-family:verdana;font-weight:bold;'>X</span>"; 243 } 244} 245function open_search(elmnt) { 246 var a = document.getElementById("googleSearch"); 247 if (a.style.display == "") { 248 a.style.display = "none"; 249 a.style.paddingRight = ""; 250 elmnt.innerHTML = ""; 251 } else { 252 a.style.display = ""; 253 if (window.innerWidth > 700) { 254 a.style.width = "40%"; 255 } else { 256 a.style.width = "80%"; 257 } 258 if (document.getElementById("gsc-i-id1")) {document.getElementById("gsc-i-id1").focus(); } 259 elmnt.innerHTML = "<span style='font-family:verdana;font-weight:bold;'>X</span>"; 260 } 261} 262function changecodetheme() { 263 var cc = document.body.className; 264 if (cc.indexOf("darktheme") > -1) { 265 document.body.className = cc.replace("darktheme", ""); 266 localStorage.setItem("preferredmode", "light"); 267 } else { 268 document.body.className += " darktheme"; 269 localStorage.setItem("preferredmode", "dark"); 270 } 271} 272function w3_open_nav(x) { 273 var contentNode, h, menuHeight; 274 if (document.getElementById("nav_" + x).style.display == "block") { 275 w3_close_nav(x); 276 } else { 277 w3_close_all_nav(); 278 document.getElementById("nav_" + x).style.display = "block"; 279 if (document.getElementById("topnavbtn_" + x)) { 280 document.getElementById("topnavbtn_" + x).getElementsByTagName("i")[0].style.display = "none"; 281 document.getElementById("topnavbtn_" + x).getElementsByTagName("i")[1].style.display = "inline"; 282 //document.getElementById("nav_" + x).getElementsByTagName("h3")[0].focus(); 283 } 284 } 285 h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; 286 menuHeight = document.getElementById("nav_" + x).offsetHeight; 287 if (menuHeight > h) { 288 document.getElementById("nav_" + x).style.height = (h - 106) + "px"; 289 } 290} 291function w3_close_nav(x) { 292 document.getElementById("nav_" + x).style.display = "none"; 293 if (document.getElementById("topnavbtn_" + x)) { 294 document.getElementById("topnavbtn_" + x).getElementsByTagName("i")[0].style.display = "inline"; 295 document.getElementById("topnavbtn_" + x).getElementsByTagName("i")[1].style.display = "none"; 296 document.getElementById("nav_" + x).style.height = ""; 297 } 298} 299function w3_close_all_nav() { 300 w3_close_all_topnav(); 301 close_menu(); 302} 303function w3_close_all_topnav() { 304 w3_close_nav("tutorials"); 305 w3_close_nav("references"); 306 w3_close_nav("exercises"); 307} 308(function () { 309 var x, y, i, a, b, c, cc, d, m; 310 m = (document.getElementById("leftmenu") || document.getElementById("sidenav")); 311 x = m.getElementsByTagName("A"); 312 d = document.location.href; 313 for (i = 0; i < x.length; i++) { 314 if (d.indexOf(x[i].href) >= 0) { 315 x[i].className = "active"; 316 y = x[i].nextElementSibling; 317 if (y && (y.className.indexOf("ref_overview") > -1 || y.className.indexOf("tut_overview") > -1)) { 318 y.style.display = "block"; 319 if (y.className.indexOf("tut_overview") > -1) { 320 x[i].className = "active_overview"; 321 y.getElementsByTagName("a")[0].className = "active"; 322 } 323 if (x[i].addEventListener) { 324 cc = true; 325 x[i].addEventListener("click", function () { 326 if (cc == true) { 327 y.style.display = "none"; 328 event.preventDefault(); 329 cc = false; 330 } else { 331 y.style.display = "block"; 332 cc = true; 333 event.preventDefault(); 334 } 335 }); 336 } 337 } else if (x[i].parentElement.className.indexOf("ref_overview") > -1) { 338 x[i].parentElement.style.display = "block"; 339 x[i].parentElement.previousElementSibling.className = "activesub"; 340 } else if (x[i].parentElement.className.indexOf("tut_overview") > -1) { 341 x[i].parentElement.style.display = "block"; 342 x[i].parentElement.previousElementSibling.className = "active_overview"; 343 } 344 break; 345 } else if (d.indexOf("/tags/att_") > -1) { 346 c = d.substring(d.indexOf("/tags/att_") + 10, d.lastIndexOf("_")); 347 if (x[i].href == d.substr(0, d.indexOf("../tags/index.html")) + "/tags/tag_" + c + ".asp") { 348 x[i].className = "active"; 349 } 350 } else if (d.indexOf("/howto/default_page") > -1) { 351 if (x[i].href.indexOf("default.html") > -1) { 352 x[i].className = "active"; 353 } 354 } 355 }
356 sidemenuitemintoview() 357 x = document.getElementById("topnav").getElementsByTagName("A"); 358 for (i = 0; i < x.length; i++) { 359 a = document.location.pathname; 360 b = x[i].pathname; 361 if ((x[i].parentNode.tagName == "LI" || x[i].parentNode.className.indexOf("w3-bar") > -1) && a.substr(0, a.indexOf("../index.html",1)) == b.substr(0, b.indexOf("../index.html",1))) { 362 x[i].className += " active"; 363 } 364 } 365 if (window.addEventListener) { 366 document.getElementById("main").addEventListener("click", w3_close_all_nav, true); 367 m.addEventListener("click", w3_close_all_topnav, true); 368 document.getElementById("right").addEventListener("click", w3_close_all_nav, true); 369 document.getElementById("main").addEventListener("wheel", w3_close_all_nav, true); 370 document.getElementById("main").addEventListener("touchstart", w3_close_all_nav, true); 371 } else if (window.attachEvent) { 372 document.getElementById("main").attachEvent("onclick", w3_close_all_nav); 373 m.attachEvent("onclick", w3_close_all_topnav); 374 document.getElementById("right").attachEvent("onclick", w3_close_all_nav); 375 } 376 if ('ontouchstart' in window || 'onmsgesturechange' in window) { 377 document.getElementById("leftmenuinnerinner").style.overflowY = "scroll"; 378 } 379})(); 380//(function() { 381// var cx = '012971019331610648934:m2tou3_miwy'; 382// var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 383// gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 384// '//www.google.com/cse/cse.js?cx=' + cx; 385// var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 386//})(); 387function searchfield_focus(obj) { 388 obj.style.color = ""; 389 obj.style.fontStyle = ""; 390 if (obj.value == "Search w3schools.com") {obj.value = "";} 391} 392var addr = document.location.href; 393function displayError() { 394// document.getElementById("err_url").value = addr; 395 document.getElementById("err_form").style.display = "block"; 396// document.getElementById("err_email").focus(); 397// hideSent(); 398} 399function hideError() { 400 document.getElementById("err_form").style.display = "none"; 401} 402function hideSent() { 403 document.getElementById("err_sent").style.display = "none"; 404} 405function sendErr() { 406 var xmlhttp; 407 var err_url = document.getElementById("err_url").value; 408 var err_email = document.getElementById("err_email").value; 409 var err_desc = document.getElementById("err_desc").value; 410 if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 411 xmlhttp = new XMLHttpRequest(); 412 } else {// code for IE6, IE5 413 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 414 } 415 xmlhttp.open("POST", "../err_sup.html", true); 416 xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 417 xmlhttp.send("err_url=" + err_url + "&err_email=" + err_email + "&err_desc=" + escape(err_desc)); 418 document.getElementById("err_desc").value = ""; 419 hideError(); 420 document.getElementById("err_sent").style.display = "block"; 421} 422function clickFBLike() { 423 document.getElementById("fblikeframe").style.display = 'block'; 424 document.getElementById("popupDIV").innerHTML = "<iframe src='/fblike.asp?r=" + Math.random() + "' frameborder='no' style='height:200px;width:250px;'></iframe><br><button onclick='hideFBLike()' class='w3-btn w3-black'>Close</button>"; 425} 426function hideFBLike() { 427 document.getElementById("fblikeframe").style.display = 'none'; 428} 429function loginCircle(xx, yy, r, aD) { 430 var aR = (aD-90) * Math.PI / 180.0; 431 return { 432 x: xx + (r * Math.cos(aR)), 433 y: yy + (r * Math.sin(aR)) 434 }; 435} 436function loginDrawCircle(x, y, r, sa, ea){ 437 var s = loginCircle(x, y, r, ea); 438 var e = loginCircle(x, y, r, sa); 439 var f = ea - sa <= 180 ? "0" : "1"; 440 return ["M", s.x, s.y, "A", r, r, 0, f, 0, e.x, e.y].join(" "); 441} 442function login_user(event) { 443 event.preventDefault(); 444 var xhttp = new XMLHttpRequest(), a, b, f, f2, valid = 1; 445 f = document.forms["loginform"]; 446 a = f["n"]; 447 b = f["p"]; 448 if (a.value == "") { 449 a.style.backgroundColor = "#ffcccc"; 450 valid = 0; 451 } 452 if (b.value == "") { 453 b.style.backgroundColor = "#ffcccc"; 454 valid = 0; 455 } 456 if (valid == 0) {return false;} 457 document.getElementById('login_submit_button').focus(); 458 xhttp.onreadystatechange = function() { 459 if (this.readyState == 4 && this.status == 200) { 460 if (this.responseText == "OK") { 461 a.value = ""; 462 b.value = ""; 463 w3_close_nav("login"); 464 loadUser(); 465 } else if (this.responseText == "OK2") { 466 document.getElementById("loginerrordiv").innerHTML = "Your account has not been verified yet"; 467 document.getElementById("loginerrordiv").style.display = "block"; 468 } else if (this.responseText == "NOSUCHUSER") { 469 a.style.backgroundColor = "#ffcccc"; 470 b.style.backgroundColor = "#ffcccc"; 471 document.getElementById("loginerrordiv").innerHTML = "Wrong Username or Password"; 472 document.getElementById("loginerrordiv").style.display = "block"; 473 } else { 474 document.getElementById("loginerrordiv").innerHTML = "Ooops! Something went wrong..."; 475 document.getElementById("loginerrordiv").style.display = "block"; 476 } 477 } 478 }; 479 xhttp.open("POST", "../../mypage.w3schools.com/mypage/login_user.html", true); 480 xhttp.withCredentials = true; 481 xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 482 // x h t t p.send("n=" + encodeURIComponent(a.value) + "&p=" + encodeURIComponent(b.value)); 483 484} 485 486function login_inputGetsFocus(elmnt) { 487 document.forms["loginform"]["n"].style.backgroundColor = "#fff"; 488 document.forms["loginform"]["p"].style.backgroundColor = "#fff"; 489 if (document.getElementById("loginerrordiv")) { 490 document.getElementById("loginerrordiv").style.display = "none"; 491 } 492} 493function googleTranslateElementInit() { 494 new google.translate.TranslateElement({ 495 pageLanguage: 'en', 496 autoDisplay: false, 497 gaTrack: true, 498 gaId: 'UA-142508205-4' 499 }, 'google_translate_element'); 500} 501function printPage() { 502 var content = document.getElementById("main").innerHTML; 503 var css = "", i, j, c = document.getElementById("main").cloneNode(true); 504 for (i = 0; i < c.childNodes.length; i++) { 505 if (c.childNodes[i].nodeType == 1 && (c.childNodes[i].getAttribute("id") == "mainLeaderboard" || c.childNodes[i].getAttribute("id") == "midcontentadcontainer")) { 506 c.removeChild(c.childNodes[i]); 507 content = c.innerHTML; 508 } 509 } 510 var head = document.getElementsByTagName("head")[0].innerHTML; 511 var myWindow=window.open('','',''); 512 myWindow.document.write("<html><head>"+head+"<style>body{padding:15px;}@media print {.printbtn {display:none;}}</style></head><body><button class='printbtn' onclick='window.print()'>Print Page</button><br><br>"+content+"<p><a href='/about/about_copyright.asp'>Copyright 1999-2019</a>
512 by Refsnes Data. All Rights Reserved.</p></body></html>"); 513} 514function openGoogleTranslate() { 515 var d = "text/javascript", 516 e = "text/css", 517 f = "stylesheet", 518 g = "script", 519 h = "link", 520 k = "head", 521 l = "complete", 522 m = "UTF-8", 523 n = "."; 524 document.getElementById("google_translate_element").innerHTML = ""; 525 526 function p(b) { 527 var a = document.getElementsByTagName(k)[0]; 528 a || (a = document.body.parentNode.appendChild(document.createElement(k))); 529 a.appendChild(b) 530 } 531 532 function _loadJs(b) { 533 var a = document.createElement(g); 534 a.type = d; 535 a.charset = m; 536 a.src = b; 537 p(a) 538 } 539 540 function _loadCss(b) { 541 var a = document.createElement(h); 542 a.type = e; 543 a.rel = f; 544 a.charset = m; 545 a.href = b; 546 p(a) 547 } 548 549 function _isNS(b) { 550 b = b.split(n); 551 for (var a = window, c = 0; c < b.length; ++c) 552 if (!(a = a[b[c]])) return !1; 553 return !0 554 } 555 556 function _setupNS(b) { 557 b = b.split(n); 558 for (var a = window, c = 0; c < b.length; ++c) a.hasOwnProperty ? a.hasOwnProperty(b[c]) ? a = a[b[c]] : a = a[b[c]] = {} : a = a[b[c]] || (a[b[c]] = {}); 559 return a 560 } 561 window.addEventListener && "undefined" == typeof document.readyState && window.addEventListener("DOMContentLoaded", function() { 562 document.readyState = l 563 }, !1); 564 if (_isNS('google.translate.Element')) { 565 return 566 }(function() { 567 var c = _setupNS('google.translate._const'); 568 c._cl = 'no'; 569 c._cuc = 'googleTranslateElementInit'; 570 c._cac = ''; 571 c._cam = ''; 572 var h = 'translate.googleapis.com'; 573 var s = (true ? 'https' : window.location.protocol == 'https:' ? 'https' : 'http') + '://'; 574 var b = s + h; 575 c._pah = h; 576 c._pas = s; 577 c._pbi = b + '/translate_static/img/te_bk.gif'; 578 c._pci = b + '/translate_static/img/te_ctrl3.gif'; 579 c._pli = b + '/translate_static/img/loading.gif'; 580 c._plla = h + '/translate_a/l'; 581 c._pmi = b + '/translate_static/img/mini_google.png'; 582 c._ps = b + '/translate_static/css/translateelement.css'; 583 c._puh = 'translate.google.com'; 584 _loadCss(c._ps); 585 _loadJs(b + '/translate_static/js/element/main_no.js'); 586 })(); 587} 588/* w3codecolor ver 1.32 by w3schools.com */ 589( 590function w3CodeColor() { 591 var x, i, j, k, l, modes = ["html", "js", "java", "css", "sql", "python"]; 592 if (!document.getElementsByClassName) {return;} 593 k = modes.length; 594 for (j = 0; j < k; j++) { 595 x = document.getElementsByClassName(modes[j] + "High"); 596 l = x.length; 597 for (i = 0; i < l; i++) { 598// if (modes[j] == "react") { 599// codemirrorize(x[i]); 600// } else { 601 x[i].innerHTML = w3CodeColorize(x[i].innerHTML + " ", modes[j]); 602// } 603 } 604} 605/* 606function codemirrorize(x) { 607 var txt = x.innerText; 608 x.innerHTML = ""; 609 var myCodeMirror = CodeMirror(x, 610 { 611 mode: "jsx", 612 value: txt, 613 readOnly: true 614 }); 615 616} 617*/ 618function w3CodeColorize(x, lang) { 619 var tagcolor = "mediumblue"; 620 var tagnamecolor = "brown"; 621 var attributecolor = "red"; 622 var attributevaluecolor = "mediumblue"; 623 var commentcolor = "green"; 624 var cssselectorcolor = "brown"; 625 var csspropertycolor = "red"; 626 var csspropertyvaluecolor = "mediumblue"; 627 var cssdelimitercolor = "black"; 628 var cssimportantcolor = "red"; 629 var jscolor = "black"; 630 var jskeywordcolor = "mediumblue"; 631 var jsstringcolor = "brown"; 632 var jsnumbercolor = "red"; 633 var jspropertycolor = "black"; 634 var javacolor = "black"; 635 var javakeywordcolor = "mediumblue"; 636 var javastringcolor = "brown"; 637 var javanumbercolor = "red"; 638 var javapropertycolor = "black"; 639 var kotlincolor = "black"; 640 var kotlinkeywordcolor = "mediumblue"; 641 var kotlinstringcolor = "brown"; 642 var kotlinnumbercolor = "red"; 643 var kotlinpropertycolor = "black"; 644 var phptagcolor = "red"; 645 var phpcolor = "black"; 646 var phpkeywordcolor = "mediumblue"; 647 var phpglobalcolor = "goldenrod"; 648 var phpstringcolor = "brown"; 649 var phpnumbercolor = "red"; 650 var pythoncolor = "black"; 651 var pythonkeywordcolor = "mediumblue"; 652 var pythonstringcolor = "brown"; 653 var pythonnumbercolor = "red"; 654 var angularstatementcolor = "red"; 655 var sqlcolor = "black"; 656 var sqlkeywordcolor = "mediumblue";
657 var sqlstringcolor = "brown"; 658 var sqlnumbercolor = ""; 659 if (!lang) {lang = "html"; } 660 if (lang == "html") {return htmlMode(x);} 661 if (lang == "css") {return cssMode(x);} 662 if (lang == "js") {return jsMode(x);} 663 if (lang == "java") {return javaMode(x);} 664 if (lang == "kotlin") {return kotlinMode(x);} 665 if (lang == "php") {return phpMode(x);} 666 if (lang == "sql") {return sqlMode(x);} 667 if (lang == "python") {return pythonMode(x);} 668 return x; 669 function extract(str, start, end, func, repl) { 670 var s, e, d = "", a = []; 671 while (str.search(start) > -1) { 672 s = str.search(start); 673 e = str.indexOf(end, s); 674 if (e == -1) {e = str.length;} 675 if (repl) { 676 a.push(func(str.substring(s, e + (end.length)))); 677 str = str.substring(0, s) + repl + str.substr(e + (end.length)); 678 } else { 679 d += str.substring(0, s); 680 d += func(str.substring(s, e + (end.length))); 681 str = str.substr(e + (end.length)); 682 } 683 } 684 this.rest = d + str; 685 this.arr = a; 686 } 687 function htmlMode(txt) { 688 var rest = txt, done = "", php, comment, angular, startpos, endpos, note, i; 689 php = new extract(rest, "<\\?php", "?>", phpMode, "W3PHPPOS"); 690 rest = php.rest; 691 comment = new extract(rest, "<!--", "-->", commentMode, "W3HTMLCOMMENTPOS"); 692 rest = comment.rest; 693 while (rest.indexOf("<") > -1) { 694 note = ""; 695 startpos = rest.indexOf("<"); 696 if (rest.substr(startpos, 9).toUpperCase() == "<STYLE") {note = "css";} 697 if (rest.substr(startpos, 10).toUpperCase() == "<SCRIPT") {note = "javascript";} 698 endpos = rest.indexOf(">", startpos); 699 if (endpos == -1) {endpos = rest.length;} 700 done += rest.substring(0, startpos); 701 done += tagMode(rest.substring(startpos, endpos + 4)); 702 rest = rest.substr(endpos + 4); 703 if (note == "css") { 704 endpos = rest.indexOf("</style>"); 705 if (endpos > -1) { 706 done += cssMode(rest.substring(0, endpos)); 707 rest = rest.substr(endpos); 708 } 709 } 710 if (note == "javascript") { 711 endpos = rest.indexOf("</script>"); 712 if (endpos > -1) { 713 done += jsMode(rest.substring(0, endpos)); 714 rest = rest.substr(endpos); 715 } 716 } 717 } 718 rest = done + rest; 719 angular = new extract(rest, "{{", "}}", angularMode); 720 rest = angular.rest; 721 for (i = 0; i < comment.arr.length; i++) { 722 rest = rest.replace("W3HTMLCOMMENTPOS", comment.arr[i]); 723 } 724 for (i = 0; i < php.arr.length; i++) { 725 rest = rest.replace("W3PHPPOS", php.arr[i]); 726 } 727 return rest; 728 } 729 function tagMode(txt) { 730 var rest = txt, done = "", startpos, endpos, result; 731 while (rest.search(/(\s|<br>)/) > -1) { 732 startpos = rest.search(/(\s|<br>)/); 733 endpos = rest.indexOf(">"); 734 if (endpos == -1) {endpos = rest.length;} 735 done += rest.substring(0, startpos); 736 done += attributeMode(rest.substring(startpos, endpos)); 737 rest = rest.substr(endpos); 738 } 739 result = done + rest; 740 result = "<span class='tagcolor' style=color:" + tagcolor + "><</span>" + result.substring(4); 741 if (result.substr(result.length - 4, 4) == ">") { 742 result = result.substring(0, result.length - 4) + "<span class='tagcolor' style=color:" + tagcolor + ">></span>"; 743 } 744 return "<span class='tagnamecolor' style=color:" + tagnamecolor + ">" + result + "</span>"; 745 } 746 function attributeMode(txt) { 747 var rest = txt, done = "", startpos, endpos, singlefnuttpos, doublefnuttpos, spacepos; 748 while (rest.indexOf("=") > -1) { 749 endpos = -1; 750 startpos = rest.indexOf("="); 751 singlefnuttpos = rest.indexOf("'", startpos); 752 doublefnuttpos = rest.indexOf('"', startpos); 753 spacepos = rest.indexOf(" ", startpos + 2); 754 if (spacepos > -1 && (spacepos < singlefnuttpos || singlefnuttpos == -1) && (spacepos < doublefnuttpos || doublefnuttpos == -1)) { 755 endpos = rest.indexOf(" ", startpos); 756 } else if (doublefnuttpos > -1 && (doublefnuttpos < singlefnuttpos || singlefnuttpos == -1) && (doublefnuttpos < spacepos || spacepos == -1)) { 757 endpos = rest.indexOf('"', rest.indexOf('"', startpos) + 1); 758 } else if (singlefnuttpos > -1 && (singlefnuttpos < doublefnuttpos || doublefnuttpos == -1) && (singlefnuttpos < spacepos || spacepos == -1)) { 759 endpos = rest.indexOf("'", rest.indexOf("'", startpos) + 1); 760 } 761 if (!endpos || endpos == -1 || endpos < startpos) {endpos = rest.length;} 762 done += rest.substring(0, startpos); 763 done += attributeValueMode(rest.substring(startpos, endpos + 1)); 764 rest = rest.substr(endpos + 1); 765 } 766 return "<span class='attributecolor' style=color:" + attributecolor + ">" + done + rest + "</span>"; 767 } 768 function attributeValueMode(txt) { 769 return "<span class='attributevaluecolor' style=color:" + attributevaluecolor + ">" + txt + "</span>"; 770 } 771 function angularMode(txt) { 772 return "<span class='angularstatementcolor' style=color:" + angularstatementcolor + ">" + txt + "</span>"; 773 } 774 function commentMode(txt) { 775 return "<span class='commentcolor' style=color:" + commentcolor + ">" + txt + "</span>"; 776 } 777 function cssMode(txt) { 778 var rest = txt, done = "", s, e, comment, i, midz, c, cc; 779 comment = new extract(rest, /\/\*/, "*/", commentMode, "W3CSSCOMMENTPOS"); 780 rest = comment.rest; 781 while (rest.search("{") > -1) { 782 s = rest.search("{"); 783 midz = rest.substr(s + 1); 784 cc = 1; 785 c = 0; 786 for (i = 0; i < midz.length; i++) { 787 if (midz.substr(i, 1) == "{") {cc++; c++} 788 if (midz.substr(i, 1) == "}") {cc--;} 789 if (cc == 0) {break;} 790 } 791 if (cc != 0) {c = 0;} 792 e = s; 793 for (i = 0; i <= c; i++) { 794 e = rest.indexOf("}", e + 1); 795 } 796 if (e == -1) {e = rest.length;} 797 done += rest.substring(0, s + 1); 798 done += cssPropertyMode(rest.substring(s + 1, e)); 799 rest = rest.substr(e); 800 } 801 rest = done + rest; 802 rest = rest.replace(/{/g, "<span class='cssdelimitercolor' style=color:" + cssdelimitercolor + ">
802{</span>"); 803 rest = rest.replace(/}/g, "<span class='cssdelimitercolor' style=color:" + cssdelimitercolor + ">}</span>"); 804 for (i = 0; i < comment.arr.length; i++) { 805 rest = rest.replace("W3CSSCOMMENTPOS", comment.arr[i]); 806 } 807 return "<span class='cssselectorcolor' style=color:" + cssselectorcolor + ">" + rest + "</span>"; 808 } 809 function cssPropertyMode(txt) { 810 var rest = txt, done = "", s, e, n, loop; 811 if (rest.indexOf("{") > -1 ) { return cssMode(rest); } 812 while (rest.search(":") > -1) { 813 s = rest.search(":"); 814 loop = true; 815 n = s; 816 while (loop == true) { 817 loop = false; 818 e = rest.indexOf(";", n); 819 if (rest.substring(e - 5, e + 1) == " ") { 820 loop = true; 821 n = e + 1; 822 } 823 } 824 if (e == -1) {e = rest.length;} 825 done += rest.substring(0, s); 826 done += cssPropertyValueMode(rest.substring(s, e + 1)); 827 rest = rest.substr(e + 1); 828 } 829 return "<span class='csspropertycolor' style=color:" + csspropertycolor + ">" + done + rest + "</span>"; 830 } 831 function cssPropertyValueMode(txt) { 832 var rest = txt, done = "", s; 833 rest = "<span class='cssdelimitercolor' style=color:" + cssdelimitercolor + ">:</span>" + rest.substring(1); 834 while (rest.search(/!important/i) > -1) { 835 s = rest.search(/!important/i); 836 done += rest.substring(0, s); 837 done += cssImportantMode(rest.substring(s, s + 10)); 838 rest = rest.substr(s + 10); 839 } 840 result = done + rest; 841 if (result.substr(result.length - 1, 1) == ";" && result.substr(result.length - 6, 6) != " " && result.substr(result.length - 4, 4) != "<" && result.substr(result.length - 4, 4) != ">" && result.substr(result.length - 5, 5) != "&") { 842 result = result.substring(0, result.length - 1) + "<span class='cssdelimitercolor' style=color:" + cssdelimitercolor + ">;</span>"; 843 } 844 return "<span class='csspropertyvaluecolor' style=color:" + csspropertyvaluecolor + ">" + result + "</span>"; 845 } 846 function cssImportantMode(txt) { 847 return "<span class='cssimportantcolor' style=color:" + cssimportantcolor + ";font-weight:bold;>" + txt + "</span>"; 848 } 849 function jsMode(txt) { 850 var rest = txt, done = "", esc = [], i, cc, tt = "", sfnuttpos, dfnuttpos, compos, comlinepos, keywordpos, numpos, mypos, dotpos, y; 851 for (i = 0; i < rest.length; i++) { 852 cc = rest.substr(i, 1); 853 if (cc == "\\") { 854 esc.push(rest.substr(i, 2)); 855 cc = "W3JSESCAPE"; 856 i++; 857 } 858 tt += cc; 859 } 860 rest = tt; 861 y = 1; 862 while (y == 1) { 863 sfnuttpos = getPos(rest, "'", "'", jsStringMode); 864 dfnuttpos = getPos(rest, '"', '"', jsStringMode); 865 compos = getPos(rest, /\/\*/, "*/", commentMode); 866 comlinepos = getPos(rest, /\/\//, "<br>", commentMode); 867 numpos = getNumPos(rest, jsNumberMode); 868 keywordpos = getKeywordPos("js", rest, jsKeywordMode); 869 dotpos = getDotPos(rest, jsPropertyMode); 870 if (Math.max(numpos[0], sfnuttpos[0], dfnuttpos[0], compos[0], comlinepos[0], keywordpos[0], dotpos[0]) == -1) {break;} 871 mypos = getMinPos(numpos, sfnuttpos, dfnuttpos, compos, comlinepos, keywordpos, dotpos); 872 if (mypos[0] == -1) {break;} 873 if (mypos[0] > -1) { 874 done += rest.substring(0, mypos[0]); 875 done += mypos[2](rest.substring(mypos[0], mypos[1])); 876 rest = rest.substr(mypos[1]); 877 } 878 } 879 rest = done + rest; 880 for (i = 0; i < esc.length; i++) { 881 rest = rest.replace("W3JSESCAPE", esc[i]); 882 } 883 return "<span class='jscolor' style=color:" + jscolor + ">" + rest + "</span>"; 884 } 885 function jsStringMode(txt) { 886 return "<span class='jsstringcolor' style=color:" + jsstringcolor + ">" + txt + "</span>"; 887 } 888 function jsKeywordMode(txt) { 889 return "<span class='jskeywordcolor' style=color:" + jskeywordcolor + ">" + txt + "</span>"; 890 } 891 function jsNumberMode(txt) { 892 return "<span class='jsnumbercolor' style=color:" + jsnumbercolor + ">" + txt + "</span>"; 893 } 894 function jsPropertyMode(txt) { 895 return "<span class='jspropertycolor' style=color:" + jspropertycolor + ">" + txt + "</span>"; 896 } 897 function getDotPos(txt, func) { 898 var x, i, j, s, e, arr = [".","<", " ", ";", "(", "+", ")", "[", "]", ",", "&", ":", "{", "}", "../index.html" ,"-", "*", "|", "%"]; 899 s = txt.indexOf("."); 900 if (s > -1) { 901 x = txt.substr(s + 1); 902 for (j = 0; j < x.length; j++) { 903 cc = x[j]; 904 for (i = 0; i < arr.length; i++) {
905 if (cc.indexOf(arr[i]) > -1) { 906 e = j; 907 return [s + 1, e + s + 1, func]; 908 } 909 } 910 } 911 } 912 return [-1, -1, func]; 913 } 914 function getMinPos() { 915 var i, arr = []; 916 for (i = 0; i < arguments.length; i++) { 917 if (arguments[i][0] > -1) { 918 if (arr.length == 0 || arguments[i][0] < arr[0]) {arr = arguments[i];} 919 } 920 } 921 if (arr.length == 0) {arr = arguments[i];} 922 return arr; 923 } 924 function javaMode(txt) { 925 var rest = txt, done = "", esc = [], i, cc, tt = "", sfnuttpos, dfnuttpos, compos, comlinepos, keywordpos, numpos, mypos, dotpos, y; 926 for (i = 0; i < rest.length; i++) { 927 cc = rest.substr(i, 1); 928 if (cc == "\\") { 929 esc.push(rest.substr(i, 2)); 930 cc = "W3JSESCAPE"; 931 i++; 932 } 933 tt += cc; 934 } 935 rest = tt; 936 y = 1; 937 while (y == 1) { 938 sfnuttpos = getPos(rest, "'", "'", javaStringMode); 939 dfnuttpos = getPos(rest, '"', '"', javaStringMode); 940 compos = getPos(rest, /\/\*/, "*/", commentMode); 941 comlinepos = getPos(rest, /\/\//, "<br>", commentMode); 942 numpos = getNumPos(rest, javaNumberMode); 943 keywordpos = getKeywordPos("java", rest, javaKeywordMode); 944 dotpos = getDotPos(rest, javaPropertyMode); 945 if (Math.max(numpos[0], sfnuttpos[0], dfnuttpos[0], compos[0], comlinepos[0], keywordpos[0], dotpos[0]) == -1) {break;} 946 mypos = getMinPos(numpos, sfnuttpos, dfnuttpos, compos, comlinepos, keywordpos, dotpos); 947 if (mypos[0] == -1) {break;} 948 if (mypos[0] > -1) { 949 done += rest.substring(0, mypos[0]); 950 done += mypos[2](rest.substring(mypos[0], mypos[1])); 951 rest = rest.substr(mypos[1]); 952 } 953 } 954 rest = done + rest; 955 for (i = 0; i < esc.length; i++) { 956 rest = rest.replace("W3JSESCAPE", esc[i]); 957 } 958 return "<span class='javacolor' style=color:" + javacolor + ">" + rest + "</span>"; 959 } 960 function javaStringMode(txt) { 961 return "<span class='javastringcolor' style=color:" + javastringcolor + ">" + txt + "</span>"; 962 } 963 function javaKeywordMode(txt) { 964 return "<span class='javakeywordcolor' style=color:" + javakeywordcolor + ">" + txt + "</span>"; 965 } 966 function javaNumberMode(txt) { 967 return "<span class='javanumbercolor' style=color:" + javanumbercolor + ">" + txt + "</span>"; 968 } 969 function javaPropertyMode(txt) { 970 return "<span class='javapropertycolor' style=color:" + javapropertycolor + ">" + txt + "</span>"; 971 } 972 function kotlinMode(txt) { 973 var rest = txt, done = "", esc = [], i, cc, tt = "", sfnuttpos, dfnuttpos, compos, comlinepos, keywordpos, numpos, mypos, dotpos, y; 974 for (i = 0; i < rest.length; i++) { 975 cc = rest.substr(i, 1); 976 if (cc == "\\") { 977 esc.push(rest.substr(i, 2)); 978 cc = "W3JSESCAPE"; 979 i++; 980 } 981 tt += cc; 982 } 983 rest = tt; 984 y = 1; 985 while (y == 1) { 986 sfnuttpos = getPos(rest, "'", "'", kotlinStringMode); 987 dfnuttpos = getPos(rest, '"', '"', kotlinStringMode); 988 compos = getPos(rest, /\/\*/, "*/", commentMode); 989 comlinepos = getPos(rest, /\/\//, "<br>", commentMode); 990 numpos = getNumPos(rest, kotlinNumberMode); 991 keywordpos = getKeywordPos("kotlin", rest, kotlinKeywordMode); 992 dotpos = getDotPos(rest, kotlinPropertyMode); 993 if (Math.max(numpos[0], sfnuttpos[0], dfnuttpos[0], compos[0], comlinepos[0], keywordpos[0], dotpos[0]) == -1) {break;} 994 mypos = getMinPos(numpos, sfnuttpos, dfnuttpos, compos, comlinepos, keywordpos, dotpos); 995 if (mypos[0] == -1) {break;} 996 if (mypos[0] > -1) { 997 done += rest.substring(0, mypos[0]); 998 done += mypos[2](rest.substring(mypos[0], mypos[1])); 999 rest = rest.substr(mypos[1]); 1000 } 1001 } 1002 rest = done + rest; 1003 for (i = 0; i < esc.length; i++) { 1004 rest = rest.replace("W3JSESCAPE", esc[i]); 1005 } 1006 return "<span class='kotlincolor' style=color:" + kotlincolor + ">" + rest + "</span>"; 1007 } 1008 function kotlinStringMode(txt) { 1009 return "<span class='kotlinstringcolor' style=color:" + kotlinstringcolor + ">" + txt + "</span>"; 1010 } 1011 function kotlinKeywordMode(txt) { 1012 return "<span class='kotlinkeywordcolor' style=color:" + kotlinkeywordcolor + ">" + txt + "</span>"; 1013 } 1014 function kotlinNumberMode(txt) { 1015 return "<span class='kotlinnumbercolor' style=color:" + kotlinnumbercolor + ">" + txt + "</span>"; 1016 } 1017 function kotlinPropertyMode(txt) { 1018 return "<span class='kotlinpropertycolor' style=color:" + kotlinpropertycolor + ">" + txt + "</span>"; 1019 } 1020 function sqlMode(txt) { 1021 var rest = txt, y, done = "", sfnuttpos, dfnuttpos, compos, comlinepos, keywordpos, numpos, mypos; 1022 y = 1; 1023 while (y == 1) { 1024 sfnuttpos = getPos(rest, "'", "'", sqlStringMode); 1025 dfnuttpos = getPos(rest, '"', '"', sqlStringMode); 1026 compos = getPos(rest, /\/\*/, "*/", commentMode); 1027 comlinepos = getPos(rest, /--/, "<br>", commentMode); 1028 numpos = getNumPos(rest, sqlNumberMode); 1029 keywordpos = getKeywordPos("sql", rest, sqlKeywordMode); 1030 if (Math.max(numpos[0], sfnuttpos[0], dfnuttpos[0], compos[0], comlinepos[0], keywordpos[0]) == -1) {break;} 1031 mypos = getMinPos(numpos, sfnuttpos, dfnuttpos, compos, comlinepos, keywordpos); 1032 if (mypos[0] == -1) {break;} 1033 if (mypos[0] > -1) { 1034 done += rest.substring(0, mypos[0]); 1035 done += mypos[2](rest.substring(mypos[0], mypos[1])); 1036 rest = rest.substr(mypos[1]); 1037 } 1038 } 1039 rest = done + rest; 1040 return "<span class='sqlcolor' style=color:" + sqlcolor + ">" + rest + "</span>"; 1041 } 1042 function sqlStringMode(txt) {
1043 return "<span class='sqlstringcolor' style=color:" + sqlstringcolor + ">" + txt + "</span>"; 1044 } 1045 function sqlKeywordMode(txt) { 1046 return "<span class='sqlkeywordcolor' style=color:" + sqlkeywordcolor + ">" + txt + "</span>"; 1047 } 1048 function sqlNumberMode(txt) { 1049 return "<span class='sqlnumbercolor' style=color:" + sqlnumbercolor + ">" + txt + "</span>"; 1050 } 1051 function phpMode(txt) { 1052 var rest = txt, done = "", sfnuttpos, dfnuttpos, compos, comlinepos, comhashpos, keywordpos, mypos, y; 1053 y = 1; 1054 while (y == 1) { 1055 sfnuttpos = getPos(rest, "'", "'", phpStringMode); 1056 dfnuttpos = getPos(rest, '"', '"', phpStringMode); 1057 compos = getPos(rest, /\/\*/, "*/", commentMode); 1058 comlinepos = getPos(rest, /\/\//, "<br>", commentMode); 1059 comhashpos = getPos(rest, "#", "<br>", commentMode); 1060 numpos = getNumPos(rest, phpNumberMode); 1061 keywordpos = getKeywordPos("php", rest, phpKeywordMode); 1062 if (Math.max(numpos[0], sfnuttpos[0], dfnuttpos[0], compos[0], comlinepos[0], comhashpos[0], keywordpos[0]) == -1) {break;} 1063 mypos = getMinPos(numpos, sfnuttpos, dfnuttpos, compos, comlinepos, comhashpos, keywordpos); 1064 if (mypos[0] == -1) {break;} 1065 if (mypos[0] > -1) { 1066 done += rest.substring(0, mypos[0]); 1067 done += mypos[2](rest.substring(mypos[0], mypos[1])); 1068 rest = rest.substr(mypos[1]); 1069 } 1070 } 1071 rest = done + rest; 1072 rest = "<span class='phptagcolor' style=color:" + phptagcolor + "><" + rest.substr(4, 4) + "</span>" + rest.substring(8); 1073 if (rest.substr(rest.length - 5, 5) == "?>") { 1074 rest = rest.substring(0, rest.length - 5) + "<span class='phptagcolor' style=color:" + phptagcolor + ">?></span>"; 1075 } 1076 return "<span class='phpcolor' style=color:" + phpcolor + ">" + rest + "</span>"; 1077 } 1078 function phpStringMode(txt) { 1079 return "<span class='phpstringcolor' style=color:" + phpstringcolor + ">" + txt + "</span>"; 1080 } 1081 function phpNumberMode(txt) { 1082 return "<span class='phpnumbercolor' style=color:" + phpnumbercolor + ">" + txt + "</span>"; 1083 } 1084 function phpKeywordMode(txt) { 1085 var glb = ["$GLOBALS","$_SERVER","$_REQUEST","$_POST","$_GET","$_FILES","$_ENV","$_COOKIE","$_SESSION"]; 1086 if (glb.indexOf(txt.toUpperCase()) > -1) { 1087 if (glb.indexOf(txt) > -1) { 1088 return "<span class='phpglobalcolor' style=color:" + phpglobalcolor + ">" + txt + "</span>"; 1089 } else { 1090 return txt; 1091 } 1092 } else { 1093 return "<span class='phpkeywordcolor' style=color:" + phpkeywordcolor + ">" + txt + "</span>"; 1094 } 1095 } 1096 function pythonMode(txt) { 1097 var rest = txt, done = "", sfnuttpos, dfnuttpos, compos, comlinepos, comhashpos, keywordpos, mypos, y; 1098 y = 1; 1099 while (y == 1) { 1100 sfnuttpos = getPos(rest, "'", "'", pythonStringMode); 1101 dfnuttpos = getPos(rest, '"', '"', pythonStringMode); 1102 compos = getPos(rest, /\/\*/, "*/", commentMode); 1103 comhashpos = getPos(rest, "#", "<br>", commentMode); 1104 numpos = getNumPos(rest, pythonNumberMode); 1105 keywordpos = getKeywordPos("python", rest, pythonKeywordMode); 1106 if (Math.max(numpos[0], sfnuttpos[0], dfnuttpos[0], compos[0], comhashpos[0], keywordpos[0]) == -1) {break;} 1107 mypos = getMinPos(numpos, sfnuttpos, dfnuttpos, compos, comhashpos, keywordpos); 1108 if (mypos[0] == -1) {break;} 1109 if (mypos[0] > -1) { 1110 done += rest.substring(0, mypos[0]); 1111 done += mypos[2](rest.substring(mypos[0], mypos[1])); 1112 rest = rest.substr(mypos[1]); 1113 } 1114 } 1115 rest = done + rest; 1116 return "<span class='pythoncolor' style=color:" + pythoncolor + ">" + rest + "</span>"; 1117 } 1118 function pythonStringMode(txt) { 1119 return "<span class='pythonstringcolor' style=color:" + pythonstringcolor + ">" + txt + "</span>"; 1120 } 1121 function pythonNumberMode(txt) { 1122 return "<span class='pythonnumbercolor' style=color:" + pythonnumbercolor + ">" + txt + "</span>"; 1123 } 1124 function pythonKeywordMode(txt) { 1125 return "<span class='pythonkeywordcolor' style=color:" + pythonkeywordcolor + ">" + txt + "</span>"; 1126 } 1127 function getKeywordPos(typ, txt, func) { 1128 var words, i, pos, rpos = -1, rpos2 = -1, patt; 1129 if (typ == "js") { 1130 words = ["abstract","arguments","boolean","break","byte","case","catch","char","class","const","continue","debugger","default","delete", 1131 "do","double","else","enum","eval","event","export","extends","false","final","finally","float","for","function","goto","if","implements","import", 1132 "in","instanceof","int","interface","let","long","NaN","native","new","null","package","private","protected","public","return","short","static", 1133 "super","switch","synchronized","this","throw","throws","transient","true","try","typeof","var","void","volatile","while","with","yield"]; 1134 } else if (typ == "java") { 1135 words = ["abstract","arguments","boolean","break","byte","case","catch","char","class","const","continue","debugger","default","delete", 1136 "do","double","else","enum","eval","event","export","extends","false","final","finally","float","for","function","goto","if","implements","import", 1137 "in","instanceof","int","interface","let","long","NaN","native","new","null","package","private","protected","public","return","short","static", 1138 "super","switch","synchronized","this","throw","throws","transient","true","try","typeof","var","void","volatile","while","with","yield", 1139 "String"]; 1140 } else if (typ == "kotlin") { 1141 words = ['package','as','typealias','class','interface','this','super','val','operator','var','fun','for','is','in','This','throw','return', 1142 'annotation','break','continue','object','if','else','while','do','try','when','!in','!is','as?','file','import','where','by','get','
1142set', 1143 'abstract','enum','open','inner','override','private','public','internal','protected','catch','finally','out','final','vararg','reified', 1144 'dynamic','companion','constructor','init','sealed','field','property','receiver','param','sparam','lateinit','data','inline','noinline', 1145 'tailrec','external','annotation','crossinline','const','operator','infix','suspend','actual','expect','setparam','Boolean','Byte','Character', 1146 'CharSequence','Class','ClassLoader','Cloneable','Comparable','Compiler','Double','Exception','Float','Integer','Long','Math','Number','Object', 1147 'Package','Pair','Process','Runtime','Runnable','SecurityManager','Short','StackTraceElement','StrictMath','String','StringBuffer','System', 1148 'Thread','ThreadGroup','ThreadLocal','Throwable','Triple','Void','Annotation','Any','BooleanArray','ByteArray','Char','CharArray', 1149 'DeprecationLevel','DoubleArray','Enum','FloatArray','Function','Int','IntArray','Lazy','LazyThreadSafetyMode','LongArray','Nothing','ShortArray','Unit']; 1150 } else if (typ == "php") { 1151 words = ["$GLOBALS","$_SERVER","$_REQUEST","$_POST","$_GET","$_FILES","$_ENV","$_COOKIE","$_SESSION", 1152 "__halt_compiler","abstract","and","array","as","break","callable","case","catch","class","clone","const","continue","declare","default", 1153 "die","do","echo","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","eval","exit","extends","final","for", 1154 "foreach","function","global","goto","if","implements","include","include_once","instanceof","insteadof","interface","isset","list","namespace","new", 1155 "or","print","private","protected","public","require","require_once","return","static","switch","throw","trait","try","unset","use","var","while","xor"]; 1156 } else if (typ == "sql") { 1157 words = ["ADD","EXTERNAL","PROCEDURE","ALL","FETCH","PUBLIC","ALTER","FILE","RAISERROR","AND","FILLFACTOR","READ","ANY","READTEXT","AS","FOREIGN", 1158 "RECONFIGURE","ASC","FREETEXT","REFERENCES","AUTHORIZATION","FREETEXTTABLE","REPLICATION","BACKUP","FROM","RESTORE","BEGIN","FULL","RESTRICT","BETWEEN", 1159 "FUNCTION","RETURN","BREAK","GOTO","REVERT","BROWSE","GRANT","REVOKE","BULK","GROUP","RIGHT","BY","HAVING","ROLLBACK","CASCADE","HOLDLOCK","ROWCOUNT", 1160 "CASE","IDENTITY","ROWGUIDCOL","CHECK","IDENTITY_INSERT","RULE","CHECKPOINT","IDENTITYCOL","SAVE","CLOSE","IF","SCHEMA","CLUSTERED","IN", 1161 "SECURITYAUDIT","COALESCE","INDEX","SELECT","COLLATE","INNER","SEMANTICKEYPHRASETABLE","COLUMN","INSERT","SEMANTICSIMILARITYDETAILSTABLE","COMMIT", 1162 "INTERSECT","SEMANTICSIMILARITYTABLE","COMPUTE","INTO","SESSION_USER","CONSTRAINT","IS","SET","CONTAINS","JOIN","SETUSER","CONTAINSTABLE","KEY", 1163 "SHUTDOWN","CONTINUE","KILL","SOME","CONVERT","LEFT","STATISTICS","CREATE","LIKE","SYSTEM_USER","CROSS","LINENO","TABLE","CURRENT","LOAD","TABLESAMPLE", 1164 "CURRENT_DATE","MERGE","TEXTSIZE","CURRENT_TIME","NATIONAL","THEN","CURRENT_TIMESTAMP","NOCHECK","TO","CURRENT_USER","NONCLUSTERED","TOP","CURSOR", 1165 "NOT","TRAN","DATABASE","NULL","TRANSACTION","DBCC","NULLIF","TRIGGER","DEALLOCATE","OF","TRUNCATE","DECLARE","OFF","TRY_CONVERT","DEFAULT","OFFSETS", 1166 "TSEQUAL","DELETE","ON","UNION","DENY","OPEN","UNIQUE","DESC","OPENDATASOURCE","UNPIVOT","DISK","OPENQUERY","UPDATE","DISTINCT","OPENROWSET", 1167 "UPDATETEXT","DISTRIBUTED","OPENXML","USE","DOUBLE","OPTION","USER","DROP","OR","VALUES","DUMP","ORDER","VARYING","ELSE","OUTER","VIEW","END", 1168 "OVER","WAITFOR","ERRLVL","PERCENT","WHEN","ESCAPE","PIVOT","WHERE","EXCEPT","PLAN","WHILE","EXEC","PRECISION","WITH","EXECUTE","PRIMARY", 1169 "WITHIN GROUP","EXISTS","PRINT","WRITETEXT","EXIT","PROC","LIMIT","MODIFY","COUNT","REPLACE"]; 1170 } else if (typ == "python") { 1171 words = ["as", "assert", "break", "class", "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", "if", "import", 1172 "lambda", "pass", "raise", "return", "try", "while", "with", "yield", "in", "abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", 1173 "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "filter", "float", "format", "frozenset", "getattr", 1174 "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len", "list", "locals", "map", "max", 1175 "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "print", "property", "range", "repr", "reversed", "round", "set", "setattr", "slice", 1176 "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "vars", "zip", "__import__", "NotImplemented", "Ellipsis", "__debug__"]; 1177 } 1178 for (i = 0; i < words.length; i++) { 1179 if (typ == "php" || typ == "sql") { 1180 pos = txt.toLowerCase().indexOf(words[i].toLowerCase()); 1181 } else { 1182 pos = txt.indexOf(words[i]); 1183 } 1184 if (pos > -1) { 1185 patt = /\W/g; 1186 if (txt.substr(pos + words[i].length,1).match(patt) && txt.substr(pos - 1,1).match(patt)) { 1187 if (pos > -1 && (rpos == -1 || pos < rpos)) { 1188 rpos = pos; 1189 rpos2 = rpos + words[i].length; 1190 } 1191 } 1192 } 1193 } 1194 return [rpos, rpos2, func]; 1195 } 1196 function getPos(txt, start, end, func) { 1197 var s, e; 1198 s = txt.search(start); 1199 e = txt.indexOf(end, s + (end.length)); 1200 if (e == -1) {e = txt.length;} 1201 return [s, e + (end.length), func]; 1202 } 1203 function getNumPos(txt, func) { 1204 var arr = ["<br>", " ", ";", "(", "+", ")", "[", "]", ",", "&", ":", "{", "}", "../index.html" ,"-", "*", "|", "%", "="], i, j, c, startpos = 0, endpos, word; 1205 for (i = 0; i < txt.length; i++) { 1206 for (j = 0; j < arr.length; j++) { 1207 c = txt.substr(i, arr[j].length); 1208 if (c == arr[j]) { 1209 if (c == "-" && (txt.substr(i - 1, 1) == "e" || txt.substr(i - 1, 1) == "E")) { 1210 continue; 1211 } 1212 endpos = i; 1213 if (startpos < endpos) { 1214 word = txt.substring(startpos, endpos); 1215 if (!isNaN(word)) {return [startpos, endpos, func];} 1216 } 1217 i += arr[j].length; 1218 startpos = i; 1219 i -= 1; 1220 break; 1221 } 1222 } 1223 } 1224 return [-1, -1, func]; 1225 } 1226} 1227} 1228)(); 1229( 1230function setThemeMode() { 1231 var x = localStorage.getItem("preferredmode"); 1232 if (x == "dark") { 1233 document.body.className += " darktheme"; 1234 } 1235})(); 1236document.getElementById("googleSearch").style.display = "none";
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.