From 647c59f8209e3a82adb3e54f4c211fc67f1e1fd6 Mon Sep 17 00:00:00 2001 From: czaks Date: Sun, 6 Apr 2014 21:27:41 +0200 Subject: move webm js into a better place --- js/webm-settings.js | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 js/webm-settings.js (limited to 'js/webm-settings.js') diff --git a/js/webm-settings.js b/js/webm-settings.js new file mode 100644 index 00000000..f67e42d6 --- /dev/null +++ b/js/webm-settings.js @@ -0,0 +1,81 @@ +/* This file is dedicated to the public domain; you may do as you wish with it. */ + +// Default settings +var defaultSettings = { + "videoexpand": true, + "videohover": false, + "videovolume": 1.0 +}; + +// Non-persistent settings for when localStorage is absent/disabled +var tempSettings = {}; + +// Scripts obtain settings by calling this function +function setting(name) { + if (localStorage) { + if (localStorage[name] === undefined) return defaultSettings[name]; + return JSON.parse(localStorage[name]); + } else { + if (tempSettings[name] === undefined) return defaultSettings[name]; + return tempSettings[name]; + } +} + +// Settings should be changed with this function +function changeSetting(name, value) { + if (localStorage) { + localStorage[name] = JSON.stringify(value); + } else { + tempSettings[name] = value; + } +} + +// Create settings menu +var settingsMenu = document.createElement("span"); +settingsMenu.className = "settings"; +settingsMenu.innerHTML = '[WebM Settings]' + + '
' + + '
' + + '
' + + '
' + + '
'; + +function refreshSettings() { + var settingsItems = settingsMenu.getElementsByTagName("input"); + for (var i = 0; i < settingsItems.length; i++) { + var control = settingsItems[i]; + if (control.type == "checkbox") { + control.checked = setting(control.name); + } else if (control.type == "range") { + control.value = setting(control.name); + } + } +} + +function setupControl(control) { + if (control.addEventListener) control.addEventListener("change", function(e) { + if (control.type == "checkbox") { + changeSetting(control.name, control.checked); + } else if (control.type == "range") { + changeSetting(control.name, control.value); + } + }, false); +} + +refreshSettings(); +var settingsItems = settingsMenu.getElementsByTagName("input"); +for (var i = 0; i < settingsItems.length; i++) { + setupControl(settingsItems[i]); +} + +if (settingsMenu.addEventListener) { + settingsMenu.addEventListener("mouseover", function(e) { + refreshSettings(); + settingsMenu.getElementsByTagName("span")[0].style.fontWeight = "bold"; + settingsMenu.getElementsByTagName("div")[0].style.display = "block"; + }, false); + settingsMenu.addEventListener("mouseout", function(e) { + settingsMenu.getElementsByTagName("span")[0].style.fontWeight = "normal"; + settingsMenu.getElementsByTagName("div")[0].style.display = "none"; + }, false); +} -- cgit v1.3