|  | $(document).ready(function(){ | 
|  |  | 
|  | prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)"); | 
|  |  | 
|  | currentTheme = localStorage.getItem("theme"); | 
|  | if (currentTheme) { | 
|  | init_color_scheme_css("css", currentTheme); | 
|  | init_color_scheme_css("css-code", currentTheme); | 
|  | } else if (prefersDarkScheme) { | 
|  | if (typeof $mode === 'undefined') { | 
|  | $mode = 'light'; | 
|  | if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) $mode = 'dark'; | 
|  | init_color_scheme_css("css", $mode); | 
|  | init_color_scheme_css("css-code", $mode); | 
|  | } | 
|  | toggle_color_scheme_css("css", $mode); | 
|  | toggle_color_scheme_css("css-code", $mode); | 
|  | } | 
|  |  | 
|  | // function to initialise the css | 
|  | function init_color_scheme_css($id, $mode) { | 
|  | if ($("#"+$id)) $("#"+$id).remove();  // remove existing id | 
|  | $("#"+$id+"-"+$mode).attr( { | 
|  | "data-href-light": $("#"+$id+"-light").attr("href"),  // store the light CSS url | 
|  | "data-href-dark": $("#"+$id+"-dark").attr("href"), // store the dark CSS url | 
|  | "data-color-scheme": $mode,  // store the mode, so that we don't re-initalise | 
|  | "media": "all",  // drop the media filter | 
|  | "id": $id  // rename the id (drop the `-{mode}` bit) | 
|  | } ); | 
|  | $other = ($mode == 'dark') ? 'light' : 'dark'; | 
|  | $("#"+$id+"-"+$other).remove(); | 
|  | } | 
|  |  | 
|  | // function to toggle the CSS | 
|  | function toggle_color_scheme_css($id, $mode) { | 
|  | // grab the new mode css href | 
|  | $href = $("#"+$id).data("href-"+$mode);  // use `.data()` here, leverage the cache | 
|  | // set the CSS to the mode preference. | 
|  | $("#"+$id).attr( { | 
|  | "href": $href, | 
|  | "data-color-scheme": $mode, | 
|  | }); | 
|  | } | 
|  |  | 
|  | // toggle button click code | 
|  | $("#css-toggle-btn").bind("click", function() { | 
|  | // get current mode | 
|  | // don't use `.data("color-scheme")`, it doesn't refresh | 
|  | $mode = $("#css").attr("data-color-scheme"); | 
|  | // test if this is a first time click event, if so initialise the code | 
|  | if (typeof $mode === 'undefined') { | 
|  | // not defined yet - set pref. & ask the browser if alt. is active | 
|  | $mode = 'light'; | 
|  | if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) $mode = 'dark'; | 
|  | init_color_scheme_css("css", $mode); | 
|  | init_color_scheme_css("css-code", $mode); | 
|  | // `init_color_scheme_css()` any other CSS | 
|  | } | 
|  | // by here we have the current mode, so swap it | 
|  | $new_mode = ($mode == 'dark') ? 'light' : 'dark'; | 
|  | toggle_color_scheme_css("css", $new_mode); | 
|  | toggle_color_scheme_css("css-code", $new_mode); | 
|  | // `toggle_color_scheme_css()` any other CSS | 
|  |  | 
|  | // Saving user's preference to the localStorage | 
|  | localStorage.setItem("theme", $new_mode); | 
|  | }); | 
|  |  | 
|  | }); |