diff --git a/.gitignore b/.gitignore index 98820ff..35aab8b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ atlassian-ide-plugin.xml /node_modules/ /bower_components/ -/dist/ diff --git a/Gruntfile.js b/Gruntfile.js index 42589f3..a5ebe11 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -29,11 +29,11 @@ module.exports = function (grunt) { }, mainonly: { src: ['src/uhr.js'], - dest: ['dist/jquery.<%= pkg.name %>.js'] + dest: 'dist/jquery.<%= pkg.name %>.main.js' }, langonly: { - src: ['src/uhr-%.js'], - dest: ['dist/jquery.<%= pkg.name %>.langs.js'] + src: ['src/uhr-*.js'], + dest: 'dist/jquery.<%= pkg.name %>.langs.js' } }, uglify: { diff --git a/dist/jquery.uhr.complete.js b/dist/jquery.uhr.complete.js new file mode 100644 index 0000000..3569c02 --- /dev/null +++ b/dist/jquery.uhr.complete.js @@ -0,0 +1,1424 @@ +/*! uhr - v0.0.1 - 2015-01-13 +* http://bärneruhr.ch/ +* Copyright (c) 2015 Manuel Friedli; Licensed MIT */ +(function($) { + 'use strict'; + var uhrGlobals = { + "id": 0, + "languages": [], + "themes": [], + registerLanguage: function registerLanguage(code, language) { + var alreadyExists = uhrGlobals.languages.some(function(element) { + if (code === element.code) { + console.error("Error: Language code '" + code + "' cannot be registered for language '" + language.language + + "' because it is already registered for language '" + element.language + "'!"); + return true; + } + return false; + }); + if (!alreadyExists) { + language.code = code; + uhrGlobals.languages.push(language); + } + } + }; + + // auto-detect themes + $('link[rel=stylesheet]').each(function(index, item) { + var styleSheet = $(item); + var styleClass = styleSheet.attr('data-class'); + if (styleClass !== undefined) { + var name = styleSheet.attr('data-name'); + if (name === undefined) { + name = styleClass; + } + uhrGlobals.themes.push({'styleClass': styleClass, 'name': name}); + } + }); + // fall-back if no theme was included + if (uhrGlobals.themes.length === 0) { + uhrGlobals.themes.push({}); + } + + // public interface methods (exported later) + var start = function start() { + if (!isOn.bind(this)()) { + this.timer = window.setInterval(function() { + this.options.time = new Date(); + update.bind(this)(); + }.bind(this), 1000); + update.bind(this)(); + setCookie.bind(this)('uhr-status', 'on'); + } + }; + var stop = function stop() { + if (isOn.bind(this)()) { + window.clearInterval(this.timer); + this.timer = null; + update.bind(this)(); + setCookie.bind(this)('uhr-status', 'off'); + } + }; + var toggle = function toggle() { + if (isOn.bind(this)()) { + this.stop(); + } else { + this.start(); + } + }; + var setLanguage = function setLanguage(languageKey) { + if (languageKey !== this.options.language) { + this.options.language = languageKey; + var renderer = new UhrRenderer(language.bind(this)(), this.element.find('.letterarea')); + renderer.render.bind(this)(function() { + this.currentMinute = -1; + update.bind(this)(); + }.bind(this)); + setCookie.bind(this)('uhr-language', languageKey); + update.bind(this)(); + } + }; + var setTheme = function setTheme(theme) { + if (theme !== this.options.theme) { + this.element.removeClass(this.options.theme).addClass(theme); + $('#uhr-onoffswitch' + this.id).removeClass(this.options.theme).addClass(theme); + this.options.theme = theme; + setCookie.bind(this)('uhr-theme', theme); + } + }; + var setTime = function setTime(time) { + this.currentMinute = -1; + if (time === null) { + this.options.time = new Date(); + } else { + if (this.timer !== null) { + window.clearInterval(this.timer); + } + this.options.time = time; + } + update.bind(this)(); + }; + var setMode = function(mode) { + this.options.mode = mode; + this.currentMinute = -1; + update.bind(this)(); + setCookie.bind(this)('uhr-mode', mode); + }; + var setWidth = function setWidth(width) { + var e = this.element; + e.css('width', width); + var realWidth = e.width(); + e.width(realWidth); + e.height(realWidth); + e.css('font-size', (realWidth / 40) + 'px'); + }; + + // private interface methods + var create = function create() { + this.id = uhrGlobals.id++; + this.timer = null; + this.currentMinute = -1; + var userTime = this.options.time; + var hash, params; + if (this.options.time === undefined) { + this.options.time = new Date(); + } + // parse the URL params + hash = window.location.hash; + if (hash !== undefined && typeof hash === 'string' && hash.charAt(0) === '#') { + hash = hash.substring(1); + hash = decodeURIComponent(hash); + params = hash.split('&'); + params.forEach(function (element) { + var pair = element.split('='); + var key = pair[0]; + var value = pair[1]; + switch (key) { + case 'l': + case 'language': + this.options.language = value; + this.options.force = true; + break; + case 't': + case 'theme': + this.options.theme = value; + this.options.force = true; + break; + case 'm': + case 'mode': + this.options.mode = value; + this.options.force = true; + break; + case 's': + case 'status': + this.options.status = value; + this.options.force = true; + break; + } + }.bind(this)); + } + // end parse the URL params + setupHTML.bind(this)(); + wireFunctionality.bind(this)(); + if (userTime !== undefined) { + this.time(userTime); + } + }; + // private helper methods (not exported) + var toggleConfigScreen = function toggleConfigScreen() { + $('#uhr-controlpanel' + this.id).toggle('fast'); + }; + // set up + var setupHTML = function setupHTML() { + var e = this.element; + // Base clock area + e.addClass('uhr'); + e.empty(); + e.append(''); + e.append(''); + e.append(''); + e.append(''); + e.append('
'); + e.append('
'); + setWidth.bind(this)(this.options.width); + + if (this.options.controls) { + var controlpanel = $('
'); + var content = $('
'); + controlpanel.append(content); + // on/off switch + var toggleSwitch = $('
'); + toggleSwitch.append(''); + toggleSwitch.append(''); + content.append(toggleSwitch); + + // time mode switch + var modeSwitch = $('
'); + modeSwitch.append(''); + modeSwitch.append(''); + content.append(modeSwitch); + // language chooser + if (uhrGlobals.languages.length > 1) { + var languageChooser = $(''); + uhrGlobals.languages.forEach(function(item) { + languageChooser.append(''); + }); + content.append(languageChooser); + } + + // theme chooser + if (uhrGlobals.themes.length > 1) { + var themeChooser = $(''); + uhrGlobals.themes.forEach(function(item) { + themeChooser.append(''); + }); + content.append(themeChooser); + } + var closebutton = $(''); + closebutton.on('click', function() { + $('#uhr-controlpanel' + this.id).hide('fast'); + }.bind(this)); + content.append(closebutton); + e.after(controlpanel); + controlpanel.hide(); + var configlink = $(''); + configlink.on('click', function() { + toggleConfigScreen.bind(this)(); + }.bind(this)); + e.after(configlink); + } + }; + var wireFunctionality = function wireFunctionality() { + // on/off switch + var toggleSwitch = $('#uhr-onoffswitch-checkbox' + this.id); + toggleSwitch.on('click', function() { + this.toggle(); + }.bind(this)); + var status = $.cookie('uhr-status' + this.id); + if (status === undefined || this.options.force) { + status = this.options.status; + } + toggleSwitch.prop('checked', status === 'on'); + if (status === 'on') { + this.start(); + } else { + this.stop(); + } + + // time mode switch + var modeSwitch = $('#uhr-modeswitch-checkbox' + this.id); + modeSwitch.on('click', function() { + if (this.options.mode === 'seconds') { + setMode.bind(this)('normal'); + } else { + setMode.bind(this)('seconds'); + } + }.bind(this)); + + var mode = $.cookie('uhr-mode' + this.id); + if (mode === undefined || this.options.force) { + mode = this.options.mode; + } + modeSwitch.prop('checked', mode !== 'seconds'); + if (mode === 'seconds') { + setMode.bind(this)('seconds'); + } else { + setMode.bind(this)('normal'); + } + + // language chooser + var languageChooser = $('#uhr-languagechooser' + this.id); + languageChooser.on('change', function() { + var languageKey = $('#uhr-languagechooser' + this.id).val(); + this.language(languageKey); + }.bind(this)); + var selectedLanguage = $.cookie('uhr-language' + this.id); + if (selectedLanguage === undefined || this.options.force) { + selectedLanguage = this.options.language; + } + var found = uhrGlobals.languages.some(function(item) { + return selectedLanguage === item.code; + }); + if (!found) { + var fallbackLanguage; + if (uhrGlobals.languages.length > 0) { + fallbackLanguage = uhrGlobals.languages[0].code; + } else { + fallbackLanguage = ''; + } + console.warn("Language '" + selectedLanguage + "' not found! Using fallback '" + fallbackLanguage + "'"); + selectedLanguage = fallbackLanguage; + } + languageChooser.val(selectedLanguage); + this.options.language = ""; + this.language(selectedLanguage); + + // theme chooser + var themeChooser = $('#uhr-themechooser' + this.id); + themeChooser.on('change', function() { + var themeKey = $('#uhr-themechooser' + this.id).val(); + this.theme(themeKey); + }.bind(this)); + var selectedTheme = $.cookie('uhr-theme' + this.id); + if (selectedTheme === undefined || this.options.force) { + selectedTheme = this.options.theme; + } + found = uhrGlobals.themes.some(function(item) { + return selectedTheme === item.styleClass; + }); + if (!found) { + var fallbackTheme = uhrGlobals.themes[0].styleClass; + console.warn("Theme '" + selectedTheme + "' not found! Using fallback '" + fallbackTheme + "'"); + selectedTheme = fallbackTheme; + } + themeChooser.val(selectedTheme); + this.options.theme = ""; + this.theme(selectedTheme); + if (this.options.autoresize) { + $(window).on('resize', function() { + var $e = this.element; + var $parent = $e.parent(); + var $window = $(window); + var parentWidth = $parent.width(); + var parentHeight = $parent.height(); + var windowWidth = $window.width(); + var windowHeight = $window.height(); + var size = Math.min(parentWidth, parentHeight, windowWidth, windowHeight) + 'px'; + setWidth.bind(this)(size); + }.bind(this)); + } + }; + var setCookie = function setCookie(cookieName, cookieValue) { + var options = {}; + if (this.options.cookiePath !== undefined) { + options = {expires: 365, path: this.options.cookiePath}; + } else { + options = {expires: 365}; + } + $.cookie(cookieName + this.id, cookieValue, options); + }; + + // business logic + var isOn = function isOn() { + return this.timer !== null; + }; + var update = function update() { + if (isOn.bind(this)()) { + var time = this.options.time; + if (!language.bind(this)().hasOwnProperty('seconds') && this.options.mode !== 'seconds') { + if (time.getMinutes() === this.currentMinute) { + return; + } + this.currentMinute = time.getMinutes(); + } + show.bind(this)(time); + } else { + clear.bind(this)(); + this.currentMinute = -1; + } + }; + var show = function show(time) { + var second = getSecond.bind(this)(time); + var dotMinute = getDotMinute.bind(this)(time); + var hour = getHour.bind(this)(time); + var coarseMinute = getCoarseMinute.bind(this)(time); + clear.bind(this)(); + if (this.options.mode === 'seconds') { + highlight.bind(this)('second' + second); + } else { + highlight.bind(this)('on'); + for (var i = 1; i <= dotMinute; i++) { + highlight.bind(this)('dot' + i); + } + highlight.bind(this)('minute' + coarseMinute); + highlight.bind(this)('hour' + hour); + } + }; + var highlight = function highlight(itemClass) { + this.element.find('.item.' + itemClass).addClass('active'); + }; + var clear = function clear() { + this.element.find('.item').removeClass('active'); + }; + var getSecond = function getSecond(date) { + if (typeof language.bind(this)().getSeconds === 'function') { + return language.bind(this)().getSeconds(date); + } + return date.getSeconds(); + }; + var getDotMinute = function getDotMinute(date) { + if (typeof language.bind(this)().getDotMinute === 'function') { + return language.bind(this)().getDotMinute(date); + } + var minutes = date.getMinutes(); + return minutes % 5; + }; + var getCoarseMinute = function getCoarseMinute(date) { + if (typeof language.bind(this)().getCoarseMinute === 'function') { + return language.bind(this)().getCoarseMinute(date); + } + return date.getMinutes(); + }; + var getHour = function getHour(date) { + if (typeof language.bind(this)().getHour === 'function') { + return language.bind(this)().getHour(date); + } + var hour = date.getHours(); + if (date.getMinutes() >= 25) { + return (hour + 1) % 24; + } + return hour; + }; + var language = function language() { + var matchingLanguages = uhrGlobals.languages.filter(function(element) { + return (element.code === this.options.language); + }, this); + if (matchingLanguages.length > 0) { + return matchingLanguages[0]; + } + // fallback: return empty object + return {}; + }; + + $.widget("fritteli.uhr", { + "options": { + width: '100%', + status: 'on', + language: 'de_CH', + theme: uhrGlobals.themes[0].styleClass, + force: false, + controls: true, + cookiePath: undefined, + autoresize: true, + mode: 'normal' + }, + "start": start, + "stop": stop, + "toggle": toggle, + "language": setLanguage, + "theme": setTheme, + "time": setTime, + "mode": setMode, + "width": setWidth, + // constructor method + "_create": create + }); + $.fritteli.uhr.register = uhrGlobals.registerLanguage; + /** + * Hilfsklasse zum Rendern der Uhr. + * @param layout Layout-Objekt, das gerendert werden soll. + * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. + */ + function UhrRenderer(layout, renderarea) { + this.render = function render(beforeshow) { + if (layout.parsed === undefined) { + switch (layout.version) { + case 2: + var delegate = new UhrRendererV2Delegate(layout); + var parsedLayout = delegate.parse(); + Object.defineProperty(layout, "parsed", {"value": parsedLayout, "writable": false, "configurable": false}); + break; + default: + console.warn("Unknown layout version: '" + layout.version + "'"); + return; + } + } + var letters = layout.parsed; + renderarea.fadeOut('fast', function() { + renderarea.empty(); + letters.forEach(function(line, index, array) { + line.forEach(function(letter) { + renderarea.append(letter.toString()); + }); + if (index < array.length - 1) { + renderarea.append('
'); + } + }); + if (typeof beforeshow === 'function') { + beforeshow(); + } + renderarea.fadeIn('fast'); + }); + }; + } + + function UhrRendererV2Delegate(layout) { + var vorne0 = { + 3: [2, 3, 4], + 4: [1, 5], + 5: [1, 4, 5], + 6: [1, 3, 5], + 7: [1, 2, 5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten0 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 10, 11], + 6: [7, 9, 11], + 7: [7, 8, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var vorne1 = { + 3: [3], + 4: [2, 3], + 5: [3], + 6: [3], + 7: [3], + 8: [3], + 9: [2, 3, 4] + }; + var hinten1 = { + 3: [9], + 4: [8, 9], + 5: [9], + 6: [9], + 7: [9], + 8: [9], + 9: [8, 9, 10] + }; + var vorne2 = { + 3: [2, 3, 4], + 4: [1, 5], + 5: [5], + 6: [4], + 7: [3], + 8: [2], + 9: [1, 2, 3, 4, 5] + }; + var hinten2 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [11], + 6: [10], + 7: [9], + 8: [8], + 9: [7, 8, 9, 10, 11] + }; + var vorne3 = { + 3: [1, 2, 3, 4, 5], + 4: [4], + 5: [3], + 6: [4], + 7: [5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten3 = { + 3: [7, 8, 9, 10, 11], + 4: [10], + 5: [9], + 6: [10], + 7: [11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var vorne4 = { + 3: [4], + 4: [3, 4], + 5: [2, 4], + 6: [1, 4], + 7: [1, 2, 3, 4, 5], + 8: [4], + 9: [4] + }; + var hinten4 = { + 3: [10], + 4: [9, 10], + 5: [8, 10], + 6: [7, 10], + 7: [7, 8, 9, 10, 11], + 8: [10], + 9: [10] + }; + var vorne5 = { + 3: [1, 2, 3, 4, 5], + 4: [1], + 5: [1, 2, 3, 4], + 6: [5], + 7: [5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten5 = { + 3: [7, 8, 9, 10, 11], + 4: [7], + 5: [7, 8, 9, 10], + 6: [11], + 7: [11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten6 = { + 3: [9, 10], + 4: [8], + 5: [7], + 6: [7, 8, 9, 10], + 7: [7, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten7 = { + 3: [7, 8, 9, 10, 11], + 4: [11], + 5: [10], + 6: [9], + 7: [8], + 8: [8], + 9: [8] + }; + var hinten8 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 11], + 6: [8, 9, 10], + 7: [7, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten9 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 11], + 6: [8, 9, 10, 11], + 7: [11], + 8: [10], + 9: [8, 9] + }; + var seconds= { + "0": [vorne0, hinten0], + "1": [vorne0, hinten1], + "2": [vorne0, hinten2], + "3": [vorne0, hinten3], + "4": [vorne0, hinten4], + "5": [vorne0, hinten5], + "6": [vorne0, hinten6], + "7": [vorne0, hinten7], + "8": [vorne0, hinten8], + "9": [vorne0, hinten9], + "10": [vorne1, hinten0], + "11": [vorne1, hinten1], + "12": [vorne1, hinten2], + "13": [vorne1, hinten3], + "14": [vorne1, hinten4], + "15": [vorne1, hinten5], + "16": [vorne1, hinten6], + "17": [vorne1, hinten7], + "18": [vorne1, hinten8], + "19": [vorne1, hinten9], + "20": [vorne2, hinten0], + "21": [vorne2, hinten1], + "22": [vorne2, hinten2], + "23": [vorne2, hinten3], + "24": [vorne2, hinten4], + "25": [vorne2, hinten5], + "26": [vorne2, hinten6], + "27": [vorne2, hinten7], + "28": [vorne2, hinten8], + "29": [vorne2, hinten9], + "30": [vorne3, hinten0], + "31": [vorne3, hinten1], + "32": [vorne3, hinten2], + "33": [vorne3, hinten3], + "34": [vorne3, hinten4], + "35": [vorne3, hinten5], + "36": [vorne3, hinten6], + "37": [vorne3, hinten7], + "38": [vorne3, hinten8], + "39": [vorne3, hinten9], + "40": [vorne4, hinten0], + "41": [vorne4, hinten1], + "42": [vorne4, hinten2], + "43": [vorne4, hinten3], + "44": [vorne4, hinten4], + "45": [vorne4, hinten5], + "46": [vorne4, hinten6], + "47": [vorne4, hinten7], + "48": [vorne4, hinten8], + "49": [vorne4, hinten9], + "50": [vorne5, hinten0], + "51": [vorne5, hinten1], + "52": [vorne5, hinten2], + "53": [vorne5, hinten3], + "54": [vorne5, hinten4], + "55": [vorne5, hinten5], + "56": [vorne5, hinten6], + "57": [vorne5, hinten7], + "58": [vorne5, hinten8], + "59": [vorne5, hinten9] + }; + + function parseArrayOrObject(letters, styleClass, input) { + if (typeof input !== 'undefined' && input !== null) { + if (Array.isArray(input)) { + input.forEach(function(item) { + parseObject(letters, styleClass, item); + }); + } else { + parseObject(letters, styleClass, input); + } + } + } + + function parseObject(letters, styleClass, object) { + if (typeof object !== 'undefined' && object !== null) { + Object.keys(object).forEach(function(y) { + var highlightLetters = object[y]; + highlightLetters.forEach(function(x) { + letters[y - 1][x - 1].addStyle(styleClass); + }); + }); + } + } + + function parseTimeDefinition(letters, styleClass, definition) { + if (typeof definition !== 'undefined' && definition !== null) { + Object.keys(definition).forEach(function(listString) { + var array = listString.split(','); + var highlightLetters = definition[listString]; + array.forEach(function(item) { + parseArrayOrObject(letters, styleClass + item, highlightLetters); + }); + }); + } + } + + this.parse = function parse() { + var letters = []; + layout.letters.forEach(function(string) { + var line = []; + for (var c = 0; c < string.length; c++) { + var character = new Letter(string[c]); + line.push(character); + } + letters.push(line); + }); + parseArrayOrObject(letters, 'on', layout.permanent); + if (typeof layout.seconds !== 'undefined' && layout.seconds !== null) { + parseTimeDefinition(letters, 'second', layout.seconds); + } else { + parseTimeDefinition(letters, 'second', seconds); + } + parseTimeDefinition(letters, 'minute', layout.minutes); + parseTimeDefinition(letters, 'hour', layout.hours); + return letters; + }; + } + + /** + * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. + * @param value Der Buchstabe, der Dargestellt werden soll. + * @param style Die CSS-Styleklassen des Buchstabens. + */ + function Letter(value, style) { + var myValue = value; + var myStyle = style || ''; + this.addStyle = function(style) { + if (myStyle === '') { + myStyle = style; + } else { + myStyle += ' ' + style; + } + }; + this.toString = function() { + return '' + myValue + ''; + }; + } +})(jQuery); + +(function($) { + 'use strict'; + var es_ist = {1: [1, 2, 4, 5, 6]}; + var uhr = {10: [9, 10, 11]}; + var nach = {4: [8, 9, 10, 11]}; + var vor = {4: [1, 2, 3]}; + var halb = {5: [1, 2, 3, 4]}; + var fuenf = {1: [8, 9, 10, 11]}; + var zehn = {2: [1, 2, 3, 4]}; + var viertel = {3: [5, 6, 7, 8, 9, 10, 11]}; + var zwanzig = {2: [5, 6, 7, 8, 9, 10, 11]}; + var dreiviertel = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Deutsch', + "letters": [ + 'ESKISTAFÜNF', + 'ZEHNZWANZIG', + 'DREIVIERTEL', + 'VORFUNKNACH', + 'HALBAELFÜNF', + 'EINSXAMZWEI', + 'DREIPMJVIER', + 'SECHSNLACHT', + 'SIEBENZWÖLF', + 'ZEHNEUNKUHR' + ], + "permanent": es_ist, + "minutes": { + "0,1,2,3,4": uhr, + "5,6,7,8,9": [fuenf, nach], + "10,11,12,13,14": [zehn, nach], + "15,16,17,18,19": [viertel, nach], + "20,21,22,23,24": [zwanzig, nach], + "25,26,27,28,29": [fuenf, vor, halb], + "30,31,32,33,34": halb, + "35,36,37,38,39": [fuenf, nach, halb], + "40,41,42,43,44": [zwanzig, vor], + "45,46,47,48,49": dreiviertel, + "50,51,52,53,54": [zehn, vor], + "55,56,57,58,59": [fuenf, vor] + }, + "hours": { + "0,12": {9: [7, 8, 9, 10, 11]}, + "1,13": {6: [1, 2, 3, 4]}, + "2,14": {6: [8, 9, 10, 11]}, + "3,15": {7: [1, 2, 3, 4]}, + "4,16": {7: [8, 9, 10, 11]}, + "5,17": {5: [8, 9, 10, 11]}, + "6,18": {8: [1, 2, 3, 4, 5]}, + "7,19": {9: [1, 2, 3, 4, 5, 6]}, + "8,20": {8: [8, 9, 10, 11]}, + "9,21": {10: [4, 5, 6, 7]}, + "10,22": {10: [1, 2, 3, 4]}, + "11,23": {5: [6, 7, 8]} + } + }; + $.fritteli.uhr.register('de', layout); +}(jQuery)); +(function($) { + 'use strict'; +// hilfsvariablen + var es_isch = {1: [1, 2, 4, 5, 6, 7]}; + var ab = {4: [1, 2]}; + var vor = {3: [9, 10, 11]}; + var haubi = {4: [4, 5, 6, 7, 8]}; + var fuef = {1: [9, 10, 11]}; + var zae = {2: [9, 10, 11]}; + var viertu = {2: [1, 2, 3, 4, 5, 6]}; + var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var layout = { + // version: zur Zeit immer 2 (Pflichtattribut) + "version": 2, + // Sprechender Name der Sprache + "language": 'Bärndütsch', + // Buchstabenfeld als Array von Strings. + "letters": [ + 'ESKISCHAFÜF', + 'VIERTUBFZÄÄ', + 'ZWÄNZGSIVOR', + 'ABOHAUBIEGE', + 'EISZWÖISDRÜ', + 'VIERIFÜFIQT', + 'SÄCHSISIBNI', + 'ACHTINÜNIEL', + 'ZÄNIERBEUFI', + 'ZWÖUFINAUHR' + ], + // Permanent aktive Buchstaben. , vgl. ausführliche Beschreibung bei "minutes". + "permanent": es_isch, + /* + * Minuten: Objekt im folgenden Format: + * { + * : , + * ... + * } + * : String von Komma-separierten Minutenwerten, zu welchem die in angegebenen Buchstaben aktiv sein sollen + * : [ , ...] | + * : { : [ , ... ] } + * : Die Zeile, in welcher die Buchstaben liegen; von oben gezählt, oben ist 1. + * : Die Spalte, in der ein einzelner Buchstabe liegt; von links gezählt, links ist 1. + * Beispiel: + * "minutes": { + * "0,1": {1: [6, 7, 9]}, + * "5": [ {3: [1, 2]}, {4: [10, 11]} ] + * } + * Erklärung: + * Bei Minuten 0 und 1 sind die Buchstaben 6, 7 und 9 der ersten Zeile aktiv. + * Bei Minute 5 sind die Buchstaben 1 und 2 der Zeile 3 sowie die Buchstaben 10 und 11 der Zeile 4 aktiv. + */ + "minutes": { + "5,6,7,8,9": [fuef, ab], + "10,11,12,13,14": [zae, ab], + "15,16,17,18,19": [viertu, ab], + "20,21,22,23,24": [zwaenzg, ab], + "25,26,27,28,29": [fuef, vor, haubi], + "30,31,32,33,34": haubi, + "35,36,37,38,39": [fuef, ab, haubi], + "40,41,42,43,44": [zwaenzg, vor], + "45,46,47,48,49": [viertu, vor], + "50,51,52,53,54": [zae, vor], + "55,56,57,58,59": [fuef, vor] + }, + // Die Stunden; gleiches Format wie bei den Minuten + "hours": { + "0,12": {10: [1, 2, 3, 4, 5, 6]}, + "1,13": {5: [1, 2, 3]}, + "2,14": {5: [4, 5, 6, 7]}, + "3,15": {5: [9, 10, 11]}, + "4,16": {6: [1, 2, 3, 4, 5]}, + "5,17": {6: [6, 7, 8, 9]}, + "6,18": {7: [1, 2, 3, 4, 5, 6]}, + "7,19": {7: [7, 8, 9, 10, 11]}, + "8,20": {8: [1, 2, 3, 4, 5]}, + "9,21": {8: [6, 7, 8, 9]}, + "10,22": {9: [1, 2, 3, 4]}, + "11,23": {9: [8, 9, 10, 11]} + } + }; +// Das Layout bei der Uhr unter dem Code "de_CH" registrieren. + $.fritteli.uhr.register('de_CH', layout); +}(jQuery)); +(function($) { + 'use strict'; + var es_isch = {1: [1, 2, 4, 5, 6, 7]}; + var genau = {3: [7, 8, 9, 10, 11]}; + var ab = {4: [4, 5]}; + var vor = {4: [1, 2, 3]}; + var haubi = {4: [7, 8, 9, 10, 11]}; + var fuef = {1: [9, 10, 11]}; + var zae = {2: [9, 10, 11]}; + var viertu = {2: [1, 2, 3, 4, 5, 6]}; + var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var layout = { + "version": 2, + "language": 'Bärndütsch (genau)', + "letters": [ + 'ESKISCHAFÜF', + 'VIERTUBFZÄÄ', + 'ZWÄNZGGENAU', + 'VORABOHAUBI', + 'EISZWÖISDRÜ', + 'VIERIFÜFIQT', + 'SÄCHSISIBNI', + 'ACHTINÜNIEL', + 'ZÄNIERBEUFI', + 'ZWÖUFINAUHR' + ], + "permanent": es_isch, + "minutes": { + "0": genau, + "5,6,7,8,9": [fuef, ab], + "10,11,12,13,14": [zae, ab], + "15,16,17,18,19": [viertu, ab], + "20,21,22,23,24": [zwaenzg, ab], + "25,26,27,28,29": [fuef, vor, haubi], + "30,31,32,33,34": haubi, + "35,36,37,38,39": [fuef, ab, haubi], + "40,41,42,43,44": [zwaenzg, vor], + "45,46,47,48,49": [viertu, vor], + "50,51,52,53,54": [zae, vor], + "55,56,57,58,59": [fuef, vor] + }, + "hours": { + "0,12": {10: [1, 2, 3, 4, 5, 6]}, + "1,13": {5: [1, 2, 3]}, + "2,14": {5: [4, 5, 6, 7]}, + "3,15": {5: [9, 10, 11]}, + "4,16": {6: [1, 2, 3, 4, 5]}, + "5,17": {6: [6, 7, 8, 9]}, + "6,18": {7: [1, 2, 3, 4, 5, 6]}, + "7,19": {7: [7, 8, 9, 10, 11]}, + "8,20": {8: [1, 2, 3, 4, 5]}, + "9,21": {8: [6, 7, 8, 9]}, + "10,22": {9: [1, 2, 3, 4]}, + "11,23": {9: [8, 9, 10, 11]} + } + }; + $.fritteli.uhr.register('de_CH_genau', layout); +}(jQuery)); +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +(function($) { + 'use strict'; + + var klokken_er = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]}; + var minutter = {4: [4, 5, 6, 7, 8, 9, 10, 11]}; + var i = {5: [8]}; + var over = {5: [4, 5, 6, 7]}; + var fem = {2: [1, 2, 3]}; + var ti = {4: [1, 2]}; + var kvart = {3: [4, 5, 6, 7, 8]}; + var tyve = {2: [4, 5, 6, 7]}; + var halv = {6: [8, 9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Dansk', + "letters": [ + 'KLOKKENVERO', + 'FEMTYVESKLA', + 'OJEKVARTVAT', + 'TIAMINUTTER', + 'VEMOVERILMF', + 'MONALISHALV', + 'ETTOTREFIRE', + 'FEMSEKSRSYV', + 'OTTERNIMETI', + 'ELLEVEATOLV' + ], + "permanent": klokken_er, + "minutes": { + "5,6,7,8,9": [fem, minutter, over], + "10,11,12,13,14": [ti, minutter, over], + "15,16,17,18,19": [kvart, over], + "20,21,22,23,24": [tyve, minutter, over], + "25,26,27,28,29": [fem, minutter, i, halv], + "30,31,32,33,34": [halv], + "35,36,37,38,39": [fem, minutter, over, halv], + "40,41,42,43,44": [tyve, minutter, i], + "45,46,47,48,49": [kvart, i], + "50,51,52,53,54": [ti, minutter, i], + "55,56,57,58,59": [fem, minutter, i] + }, + "hours": { + "0,12": {10: [8, 9, 10, 11]}, + "1,13": {7: [1, 2]}, + "2,14": {7: [3, 4]}, + "3,15": {7: [5, 6, 7]}, + "4,16": {7: [8, 9, 10, 11]}, + "5,17": {8: [1, 2, 3]}, + "6,18": {8: [4, 5, 6, 7]}, + "7,19": {8: [9, 10, 11]}, + "8,20": {9: [1, 2, 3, 4]}, + "9,21": {9: [6, 7]}, + "10,22": {9: [10, 11]}, + "11,23": {10: [1, 2, 3, 4, 5, 6]} + }, + "getHour": function (date) { + var hour = date.getHours(); + if (date.getMinutes() >= 25) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('dk', layout); +}(jQuery)); +(function($) { + 'use strict'; + var it_is = {1: [1, 2, 4, 5]}; + var half = {4: [1, 2, 3, 4]}; + var to = {4: [10, 11]}; + var past = {5: [1, 2, 3, 4]}; + var o_clock = {10: [5, 6, 7, 8, 9, 10, 11]}; + var five = {3: [7, 8, 9, 10]}; + var ten = {4: [6, 7, 8]}; + var a_quarter = {2: [1, 3, 4, 5, 6, 7, 8, 9]}; + var twenty = {3: [1, 2, 3, 4, 5, 6]}; + var twentyfive = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}; + + var layout = { + "version": 2, + "language": 'English', + "letters": [ + 'ITLISBFAMPM', + 'ACQUARTERDC', + 'TWENTYFIVEX', + 'HALFBTENFTO', + 'PASTERUNINE', + 'ONESIXTHREE', + 'FOURFIVETWO', + 'EIGHTELEVEN', + 'SEVENTWELVE', + 'TENSO\'CLOCK' + ], + "permanent": it_is, + "minutes": { + "0,1,2,3,4": o_clock, + "5,6,7,8,9": [five, past], + "10,11,12,13,14": [ten, past], + "15,16,17,18,19": [a_quarter, past], + "20,21,22,23,24": [twenty, past], + "25,26,27,28,29": [twentyfive, past], + "30,31,32,33,34": [half, past], + "35,36,37,38,39": [twentyfive, to], + "40,41,42,43,44": [twenty, to], + "45,46,47,48,49": [a_quarter, to], + "50,51,52,53,54": [ten, to], + "55,56,57,58,59": [five, to] + }, + "hours": { + "0,12": {9: [6, 7, 8, 9, 10, 11]}, + "1,13": {6: [1, 2, 3]}, + "2,14": {7: [9, 10, 11]}, + "3,15": {6: [7, 8, 9, 10, 11]}, + "4,16": {7: [1, 2, 3, 4]}, + "5,17": {7: [5, 6, 7, 8]}, + "6,18": {6: [4, 5, 6]}, + "7,19": {9: [1, 2, 3, 4, 5]}, + "8,20": {8: [1, 2, 3, 4, 5]}, + "9,21": {5: [8, 9, 10, 11]}, + "10,22": {10: [1, 2, 3]}, + "11,23": {8: [6, 7, 8, 9, 10, 11]} + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 35) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('en', layout); +}(jQuery)); +(function($) { + 'use strict'; + var es_la = {1: [1, 2, 6, 7]}; + var son_las = {1: [2, 3, 4, 6, 7, 8]}; + var y = {7: [6]}; + var menos = {7: [7, 8, 9, 10, 11]}; + var media = {10: [1, 2, 3, 4, 5]}; + var cinco = {9: [7, 8, 9, 10, 11]}; + var diez = {8: [8, 9, 10, 11]}; + var cuarto = {10: [6, 7, 8, 9, 10, 11]}; + var veinte = {8: [2, 3, 4, 5, 6, 7]}; + var veinticinco = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Español', + "letters": [ + 'ESONELASUNA', + 'DOSITRESORE', + 'CUATROCINCO', + 'SEISASIETEN', + 'OCHONUEVEYO', + 'LADIEZSONCE', + 'DOCELYMENOS', + 'OVEINTEDIEZ', + 'VEINTICINCO', + 'MEDIACUARTO' + ], + "permanent": [], + "minutes": { + "5,6,7,8,9": [y, cinco], + "10,11,12,13,14": [y, diez], + "15,16,17,18,19": [y, cuarto], + "20,21,22,23,24": [y, veinte], + "25,26,27,28,29": [y, veinticinco], + "30,31,32,33,34": [y, media], + "35,36,37,38,39": [menos, veinticinco], + "40,41,42,43,44": [menos, veinte], + "45,46,47,48,49": [menos, cuarto], + "50,51,52,53,54": [menos, diez], + "55,56,57,58,59": [menos, cinco] + }, + "hours": { + "0,12": [son_las, {7: [1, 2, 3, 4]}], + "1,13": [es_la, {1: [9, 10, 11]}], + "2,14": [son_las, {2: [1, 2, 3]}], + "3,15": [son_las, {2: [5, 6, 7, 8]}], + "4,16": [son_las, {3: [1, 2, 3, 4, 5, 6]}], + "5,17": [son_las, {3: [7, 8, 9, 10, 11]}], + "6,18": [son_las, {4: [1, 2, 3, 4]}], + "7,19": [son_las, {4: [6, 7, 8, 9, 10]}], + "8,20": [son_las, {5: [1, 2, 3, 4]}], + "9,21": [son_las, {5: [5, 6, 7, 8, 9]}], + "10,22": [son_las, {6: [3, 4, 5, 6]}], + "11,23": [son_las, {6: [8, 9, 10, 11]}] + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 35) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('es', layout); +}(jQuery)); + +(function($) { + 'use strict'; + var il_est = {1: [1, 2, 4, 5, 6]}; + var et = {8: [1, 2]}; + var moins = {7: [1, 2, 3, 4, 5]}; + var demie = {10: [4, 5, 6, 7, 8]}; + var heures = {6: [6, 7, 8, 9, 10, 11]}; + var le = {7: [7, 8]}; + var cinq = {9: [7, 8, 9, 10]}; + var dix = {7: [9, 10, 11]}; + var quart = {8: [4, 5, 6, 7, 8]}; + var vingt = {9: [1, 2, 3, 4, 5]}; + var vingtcinq = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}; + + var layout = { + "version": 2, + "language": 'Français', + "letters": [ + 'ILNESTODEUX', + 'QUATRETROIS', + 'NEUFUNESEPT', + 'HUITSIXCINQ', + 'MIDIXMINUIT', + 'ONZERHEURES', + 'MOINSOLEDIX', + 'ETRQUARTPMD', + 'VINGT-CINQU', + 'ETSDEMIEPAM' + ], + "permanent": il_est, + "minutes": { + "5,6,7,8,9": cinq, + "10,11,12,13,14": dix, + "15,16,17,18,19": [et, quart], + "20,21,22,23,24": vingt, + "25,26,27,28,29": vingtcinq, + "30,31,32,33,34": [et, demie], + "35,36,37,38,39": [moins, vingtcinq], + "40,41,42,43,44": [moins, vingt], + "45,46,47,48,49": [moins, le, quart], + "50,51,52,53,54": [moins, dix], + "55,56,57,58,59": [moins, cinq] + }, + "hours": { + "0": {5: [6, 7, 8, 9, 10, 11]}, + "1,13": [ + {3: [5, 6, 7]}, + heures + ], + "2,14": [ + {1: [8, 9, 10, 11]}, + heures + ], + "3,15": [ + {2: [7, 8, 9, 10, 11]}, + heures + ], + "4,16": [ + {2: [1, 2, 3, 4, 5, 6]}, + heures + ], + "5,17": [ + {4: [8, 9, 10, 11]}, + heures + ], + "6,18": [ + {4: [5, 6, 7]}, + heures + ], + "7,19": [ + {3: [8, 9, 10, 11]}, + heures + ], + "8,20": [ + {4: [1, 2, 3, 4]}, + heures + ], + "9,21": [ + {3: [1, 2, 3, 4]}, + heures + ], + "10,22": [ + {5: [3, 4, 5]}, + heures + ], + "11,23": [ + {6: [1, 2, 3, 4]}, + heures + ], + "12": {5: [1, 2, 3, 4]} + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 35) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('fr', layout); +}(jQuery)); +(function($) { + 'use strict'; + var sono_le = {1: [1, 2, 3, 4, 6, 7]}; + var e_l = {2: [1, 3, 4]}; + var e = {8: [1]}; + var meno = {7: [8, 9, 10, 11]}; + var mezza = {10: [7, 8, 9, 10, 11]}; + var cinque = {9: [6, 7, 8, 9, 10, 11]}; + var dieci = {10: [1, 2, 3, 4, 5]}; + var un_quarto = {8: [3, 4, 6, 7, 8, 9, 10, 11]}; + var venti = {9: [1, 2, 3, 4, 5]}; + var venticinque = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Italiano', + "letters": [ + 'SONORLEBORE', + 'ÈRL\'UNASDUE', + 'TREOTTONOVE', + 'DIECIUNDICI', + 'DODICISETTE', + 'QUATTROCSEI', + 'CINQUEAMENO', + 'ECUNOQUARTO', + 'VENTICINQUE', + 'DIECIPMEZZA' + ], + "permanent": [], + "minutes": { + "5,6,7,8,9": [e, cinque], + "10,11,12,13,14": [e, dieci], + "15,16,17,18,19": [e, un_quarto], + "20,21,22,23,24": [e, venti], + "25,26,27,28,29": [e, venticinque], + "30,31,32,33,34": [e, mezza], + "35,36,37,38,39": [meno, venticinque], + "40,41,42,43,44": [meno, venti], + "45,46,47,48,49": [meno, un_quarto], + "50,51,52,53,54": [meno, dieci], + "55,56,57,58,59": [meno, cinque] + }, + "hours": { + "0,12": [sono_le, {5: [1, 2, 3, 4, 5, 6]}], + "1,13": [e_l, {2: [5, 6, 7]}], + "2,14": [sono_le, {2: [9, 10, 11]}], + "3,15": [sono_le, {3: [1, 2, 3]}], + "4,16": [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}], + "5,17": [sono_le, {7: [1, 2, 3, 4, 5, 6]}], + "6,18": [sono_le, {6: [9, 10, 11]}], + "7,19": [sono_le, {5: [7, 8, 9, 10, 11]}], + "8,20": [sono_le, {3: [4, 5, 6, 7]}], + "9,21": [sono_le, {3: [8, 9, 10, 11]}], + "10,22": [sono_le, {4: [1, 2, 3, 4, 5]}], + "11,23": [sono_le, {4: [6, 7, 8, 9, 10, 11]}] + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 35) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('it', layout); +}(jQuery)); +(function($) { + 'use strict'; + var het_is = {1: [1, 2, 3, 5, 6]}; + var over1 = {3: [1, 2, 3, 4]}; + var voor1 = {2: [8, 9, 10, 11]}; + var over2 = {4: [8, 9, 10, 11]}; + var voor2 = {5: [1, 2, 3, 4]}; + var half = {4: [1, 2, 3, 4]}; + var vijf = {1: [8, 9, 10, 11]}; + var tien = {2: [1, 2, 3, 4]}; + var kwart = {3: [7, 8, 9, 10, 11]}; + var uur = {10: [9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Nederlands', + "letters": [ + 'HETKISAVIJF', + 'TIENBTZVOOR', + 'OVERMEKWART', + 'HALFSPWOVER', + 'VOORTHGEENS', + 'TWEEPVCDRIE', + 'VIERVIJFZES', + 'ZEVENONEGEN', + 'ACHTTIENELF', + 'TWAALFBFUUR' + ], + "permanent": het_is, + "minutes": { + "0,1,2,3,4": uur, + "5,6,7,8,9": [vijf, over1], + "10,11,12,13,14": [tien, over1], + "15,16,17,18,19": [kwart, over2], + "20,21,22,23,24": [tien, voor1, half], + "25,26,27,28,29": [vijf, voor1, half], + "30,31,32,33,34": half, + "35,36,37,38,39": [vijf, over1, half], + "40,41,42,43,44": [tien, over1, half], + "45,46,47,48,49": [kwart, voor2], + "50,51,52,53,54": [tien, voor1], + "55,56,57,58,59": [vijf, voor1] + }, + "hours": { + "0,12": {10: [1, 2, 3, 4, 5, 6]}, + "1,13": {5: [8, 9, 10]}, + "2,14": {6: [1, 2, 3, 4]}, + "3,15": {6: [8, 9, 10, 11]}, + "4,16": {7: [1, 2, 3, 4]}, + "5,17": {7: [5, 6, 7, 8]}, + "6,18": {7: [9, 10, 11]}, + "7,19": {8: [1, 2, 3, 4, 5]}, + "8,20": {9: [1, 2, 3, 4]}, + "9,21": {8: [7, 8, 9, 10, 11]}, + "10,22": {9: [5, 6, 7, 8]}, + "11,23": {9: [9, 10, 11]} + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 20) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('nl', layout); +}(jQuery)); \ No newline at end of file diff --git a/dist/jquery.uhr.complete.min.js b/dist/jquery.uhr.complete.min.js new file mode 100644 index 0000000..3b96cd7 --- /dev/null +++ b/dist/jquery.uhr.complete.min.js @@ -0,0 +1,4 @@ +/*! uhr - v0.0.1 - 2015-01-13 +* http://bärneruhr.ch/ +* Copyright (c) 2015 Manuel Friedli; Licensed MIT */ +!function(a){"use strict";function b(a,b){this.render=function(d){if(void 0===a.parsed)switch(a.version){case 2:var e=new c(a),f=e.parse();Object.defineProperty(a,"parsed",{value:f,writable:!1,configurable:!1});break;default:return void console.warn("Unknown layout version: '"+a.version+"'")}var g=a.parsed;b.fadeOut("fast",function(){b.empty(),g.forEach(function(a,c,d){a.forEach(function(a){b.append(a.toString())}),c")}),"function"==typeof d&&d(),b.fadeIn("fast")})}}function c(a){function b(a,b,d){"undefined"!=typeof d&&null!==d&&(Array.isArray(d)?d.forEach(function(d){c(a,b,d)}):c(a,b,d))}function c(a,b,c){"undefined"!=typeof c&&null!==c&&Object.keys(c).forEach(function(d){var e=c[d];e.forEach(function(c){a[d-1][c-1].addStyle(b)})})}function e(a,c,d){"undefined"!=typeof d&&null!==d&&Object.keys(d).forEach(function(e){var f=e.split(","),g=d[e];f.forEach(function(d){b(a,c+d,g)})})}var f={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},g={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},h={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},i={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},j={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},k={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},l={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},m={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},n={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},o={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},p={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},q={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},r={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},s={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},t={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},u={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[f,g],1:[f,i],2:[f,k],3:[f,m],4:[f,o],5:[f,q],6:[f,r],7:[f,s],8:[f,t],9:[f,u],10:[h,g],11:[h,i],12:[h,k],13:[h,m],14:[h,o],15:[h,q],16:[h,r],17:[h,s],18:[h,t],19:[h,u],20:[j,g],21:[j,i],22:[j,k],23:[j,m],24:[j,o],25:[j,q],26:[j,r],27:[j,s],28:[j,t],29:[j,u],30:[l,g],31:[l,i],32:[l,k],33:[l,m],34:[l,o],35:[l,q],36:[l,r],37:[l,s],38:[l,t],39:[l,u],40:[n,g],41:[n,i],42:[n,k],43:[n,m],44:[n,o],45:[n,q],46:[n,r],47:[n,s],48:[n,t],49:[n,u],50:[p,g],51:[p,i],52:[p,k],53:[p,m],54:[p,o],55:[p,q],56:[p,r],57:[p,s],58:[p,t],59:[p,u]};this.parse=function(){var c=[];return a.letters.forEach(function(a){for(var b=[],e=0;e'+c+""}}var e={id:0,languages:[],themes:[],registerLanguage:function(a,b){var c=e.languages.some(function(c){return a===c.code?(console.error("Error: Language code '"+a+"' cannot be registered for language '"+b.language+"' because it is already registered for language '"+c.language+"'!"),!0):!1});c||(b.code=a,e.languages.push(b))}};a("link[rel=stylesheet]").each(function(b,c){var d=a(c),f=d.attr("data-class");if(void 0!==f){var g=d.attr("data-name");void 0===g&&(g=f),e.themes.push({styleClass:f,name:g})}}),0===e.themes.length&&e.themes.push({});var f=function(){s.bind(this)()||(this.timer=window.setInterval(function(){this.options.time=new Date,t.bind(this)()}.bind(this),1e3),t.bind(this)(),r.bind(this)("uhr-status","on"))},g=function(){s.bind(this)()&&(window.clearInterval(this.timer),this.timer=null,t.bind(this)(),r.bind(this)("uhr-status","off"))},h=function(){s.bind(this)()?this.stop():this.start()},i=function(a){if(a!==this.options.language){this.options.language=a;var c=new b(B.bind(this)(),this.element.find(".letterarea"));c.render.bind(this)(function(){this.currentMinute=-1,t.bind(this)()}.bind(this)),r.bind(this)("uhr-language",a),t.bind(this)()}},j=function(b){b!==this.options.theme&&(this.element.removeClass(this.options.theme).addClass(b),a("#uhr-onoffswitch"+this.id).removeClass(this.options.theme).addClass(b),this.options.theme=b,r.bind(this)("uhr-theme",b))},k=function(a){this.currentMinute=-1,null===a?this.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.options.time=a),t.bind(this)()},l=function(a){this.options.mode=a,this.currentMinute=-1,t.bind(this)(),r.bind(this)("uhr-mode",a)},m=function(a){var b=this.element;b.css("width",a);var c=b.width();b.width(c),b.height(c),b.css("font-size",c/40+"px")},n=function(){this.id=e.id++,this.timer=null,this.currentMinute=-1;var a,b,c=this.options.time;void 0===this.options.time&&(this.options.time=new Date),a=window.location.hash,void 0!==a&&"string"==typeof a&&"#"===a.charAt(0)&&(a=a.substring(1),a=decodeURIComponent(a),b=a.split("&"),b.forEach(function(a){var b=a.split("="),c=b[0],d=b[1];switch(c){case"l":case"language":this.options.language=d,this.options.force=!0;break;case"t":case"theme":this.options.theme=d,this.options.force=!0;break;case"m":case"mode":this.options.mode=d,this.options.force=!0;break;case"s":case"status":this.options.status=d,this.options.force=!0}}.bind(this))),p.bind(this)(),q.bind(this)(),void 0!==c&&this.time(c)},o=function(){a("#uhr-controlpanel"+this.id).toggle("fast")},p=function(){var b=this.element;if(b.addClass("uhr"),b.empty(),b.append(''),b.append(''),b.append(''),b.append(''),b.append('
'),b.append('
'),m.bind(this)(this.options.width),this.options.controls){var c=a('
'),d=a('
');c.append(d);var f=a('
');f.append(''),f.append(''),d.append(f);var g=a('
');if(g.append(''),g.append(''),d.append(g),e.languages.length>1){var h=a('');e.languages.forEach(function(a){h.append('")}),d.append(h)}if(e.themes.length>1){var i=a('');e.themes.forEach(function(a){i.append('")}),d.append(i)}var j=a('');j.on("click",function(){a("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),d.append(j),b.after(c),c.hide();var k=a('');k.on("click",function(){o.bind(this)()}.bind(this)),b.after(k)}},q=function(){var b=a("#uhr-onoffswitch-checkbox"+this.id);b.on("click",function(){this.toggle()}.bind(this));var c=a.cookie("uhr-status"+this.id);(void 0===c||this.options.force)&&(c=this.options.status),b.prop("checked","on"===c),"on"===c?this.start():this.stop();var d=a("#uhr-modeswitch-checkbox"+this.id);d.on("click",function(){l.bind(this)("seconds"===this.options.mode?"normal":"seconds")}.bind(this));var f=a.cookie("uhr-mode"+this.id);(void 0===f||this.options.force)&&(f=this.options.mode),d.prop("checked","seconds"!==f),l.bind(this)("seconds"===f?"seconds":"normal");var g=a("#uhr-languagechooser"+this.id);g.on("change",function(){var b=a("#uhr-languagechooser"+this.id).val();this.language(b)}.bind(this));var h=a.cookie("uhr-language"+this.id);(void 0===h||this.options.force)&&(h=this.options.language);var i=e.languages.some(function(a){return h===a.code});if(!i){var j;j=e.languages.length>0?e.languages[0].code:"",console.warn("Language '"+h+"' not found! Using fallback '"+j+"'"),h=j}g.val(h),this.options.language="",this.language(h);var k=a("#uhr-themechooser"+this.id);k.on("change",function(){var b=a("#uhr-themechooser"+this.id).val();this.theme(b)}.bind(this));var n=a.cookie("uhr-theme"+this.id);if((void 0===n||this.options.force)&&(n=this.options.theme),i=e.themes.some(function(a){return n===a.styleClass}),!i){var o=e.themes[0].styleClass;console.warn("Theme '"+n+"' not found! Using fallback '"+o+"'"),n=o}k.val(n),this.options.theme="",this.theme(n),this.options.autoresize&&a(window).on("resize",function(){var b=this.element,c=b.parent(),d=a(window),e=c.width(),f=c.height(),g=d.width(),h=d.height(),i=Math.min(e,f,g,h)+"px";m.bind(this)(i)}.bind(this))},r=function(b,c){var d={};d=void 0!==this.options.cookiePath?{expires:365,path:this.options.cookiePath}:{expires:365},a.cookie(b+this.id,c,d)},s=function(){return null!==this.timer},t=function(){if(s.bind(this)()){var a=this.options.time;if(!B.bind(this)().hasOwnProperty("seconds")&&"seconds"!==this.options.mode){if(a.getMinutes()===this.currentMinute)return;this.currentMinute=a.getMinutes()}u.bind(this)(a)}else w.bind(this)(),this.currentMinute=-1},u=function(a){var b=x.bind(this)(a),c=y.bind(this)(a),d=A.bind(this)(a),e=z.bind(this)(a);if(w.bind(this)(),"seconds"===this.options.mode)v.bind(this)("second"+b);else{v.bind(this)("on");for(var f=1;c>=f;f++)v.bind(this)("dot"+f);v.bind(this)("minute"+e),v.bind(this)("hour"+d)}},v=function(a){this.element.find(".item."+a).addClass("active")},w=function(){this.element.find(".item").removeClass("active")},x=function(a){return"function"==typeof B.bind(this)().getSeconds?B.bind(this)().getSeconds(a):a.getSeconds()},y=function(a){if("function"==typeof B.bind(this)().getDotMinute)return B.bind(this)().getDotMinute(a);var b=a.getMinutes();return b%5},z=function(a){return"function"==typeof B.bind(this)().getCoarseMinute?B.bind(this)().getCoarseMinute(a):a.getMinutes()},A=function(a){if("function"==typeof B.bind(this)().getHour)return B.bind(this)().getHour(a);var b=a.getHours();return a.getMinutes()>=25?(b+1)%24:b},B=function(){var a=e.languages.filter(function(a){return a.code===this.options.language},this);return a.length>0?a[0]:{}};a.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:e.themes[0].styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:f,stop:g,toggle:h,language:i,theme:j,time:k,mode:l,width:m,_create:n}),a.fritteli.uhr.register=e.registerLanguage}(jQuery),function(a){"use strict";var b={1:[1,2,4,5,6]},c={10:[9,10,11]},d={4:[8,9,10,11]},e={4:[1,2,3]},f={5:[1,2,3,4]},g={1:[8,9,10,11]},h={2:[1,2,3,4]},i={3:[5,6,7,8,9,10,11]},j={2:[5,6,7,8,9,10,11]},k={3:[1,2,3,4,5,6,7,8,9,10,11]},l={version:2,language:"Deutsch",letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],permanent:b,minutes:{"0,1,2,3,4":c,"5,6,7,8,9":[g,d],"10,11,12,13,14":[h,d],"15,16,17,18,19":[i,d],"20,21,22,23,24":[j,d],"25,26,27,28,29":[g,e,f],"30,31,32,33,34":f,"35,36,37,38,39":[g,d,f],"40,41,42,43,44":[j,e],"45,46,47,48,49":k,"50,51,52,53,54":[h,e],"55,56,57,58,59":[g,e]},hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}}};a.fritteli.uhr.register("de",l)}(jQuery),function(a){"use strict";var b={1:[1,2,4,5,6,7]},c={4:[1,2]},d={3:[9,10,11]},e={4:[4,5,6,7,8]},f={1:[9,10,11]},g={2:[9,10,11]},h={2:[1,2,3,4,5,6]},i={3:[1,2,3,4,5,6]},j={version:2,language:"Bärndütsch",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:b,minutes:{"5,6,7,8,9":[f,c],"10,11,12,13,14":[g,c],"15,16,17,18,19":[h,c],"20,21,22,23,24":[i,c],"25,26,27,28,29":[f,d,e],"30,31,32,33,34":e,"35,36,37,38,39":[f,c,e],"40,41,42,43,44":[i,d],"45,46,47,48,49":[h,d],"50,51,52,53,54":[g,d],"55,56,57,58,59":[f,d]},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}}};a.fritteli.uhr.register("de_CH",j)}(jQuery),function(a){"use strict";var b={1:[1,2,4,5,6,7]},c={3:[7,8,9,10,11]},d={4:[4,5]},e={4:[1,2,3]},f={4:[7,8,9,10,11]},g={1:[9,10,11]},h={2:[9,10,11]},i={2:[1,2,3,4,5,6]},j={3:[1,2,3,4,5,6]},k={version:2,language:"Bärndütsch (genau)",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:b,minutes:{0:c,"5,6,7,8,9":[g,d],"10,11,12,13,14":[h,d],"15,16,17,18,19":[i,d],"20,21,22,23,24":[j,d],"25,26,27,28,29":[g,e,f],"30,31,32,33,34":f,"35,36,37,38,39":[g,d,f],"40,41,42,43,44":[j,e],"45,46,47,48,49":[i,e],"50,51,52,53,54":[h,e],"55,56,57,58,59":[g,e]},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}}};a.fritteli.uhr.register("de_CH_genau",k)}(jQuery),function(a){"use strict";var b={1:[1,2,3,4,5,6,7,9,10]},c={4:[4,5,6,7,8,9,10,11]},d={5:[8]},e={5:[4,5,6,7]},f={2:[1,2,3]},g={4:[1,2]},h={3:[4,5,6,7,8]},i={2:[4,5,6,7]},j={6:[8,9,10,11]},k={version:2,language:"Dansk",letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],permanent:b,minutes:{"5,6,7,8,9":[f,c,e],"10,11,12,13,14":[g,c,e],"15,16,17,18,19":[h,e],"20,21,22,23,24":[i,c,e],"25,26,27,28,29":[f,c,d,j],"30,31,32,33,34":[j],"35,36,37,38,39":[f,c,e,j],"40,41,42,43,44":[i,c,d],"45,46,47,48,49":[h,d],"50,51,52,53,54":[g,c,d],"55,56,57,58,59":[f,c,d]},hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},getHour:function(a){var b=a.getHours();return a.getMinutes()>=25?(b+1)%24:b}};a.fritteli.uhr.register("dk",k)}(jQuery),function(a){"use strict";var b={1:[1,2,4,5]},c={4:[1,2,3,4]},d={4:[10,11]},e={5:[1,2,3,4]},f={10:[5,6,7,8,9,10,11]},g={3:[7,8,9,10]},h={4:[6,7,8]},i={2:[1,3,4,5,6,7,8,9]},j={3:[1,2,3,4,5,6]},k={3:[1,2,3,4,5,6,7,8,9,10]},l={version:2,language:"English",letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],permanent:b,minutes:{"0,1,2,3,4":f,"5,6,7,8,9":[g,e],"10,11,12,13,14":[h,e],"15,16,17,18,19":[i,e],"20,21,22,23,24":[j,e],"25,26,27,28,29":[k,e],"30,31,32,33,34":[c,e],"35,36,37,38,39":[k,d],"40,41,42,43,44":[j,d],"45,46,47,48,49":[i,d],"50,51,52,53,54":[h,d],"55,56,57,58,59":[g,d]},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},getHour:function(a){var b=a.getHours();return a.getMinutes()>=35?(b+1)%24:b}};a.fritteli.uhr.register("en",l)}(jQuery),function(a){"use strict";var b={1:[1,2,6,7]},c={1:[2,3,4,6,7,8]},d={7:[6]},e={7:[7,8,9,10,11]},f={10:[1,2,3,4,5]},g={9:[7,8,9,10,11]},h={8:[8,9,10,11]},i={10:[6,7,8,9,10,11]},j={8:[2,3,4,5,6,7]},k={9:[1,2,3,4,5,6,7,8,9,10,11]},l={version:2,language:"Español",letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],permanent:[],minutes:{"5,6,7,8,9":[d,g],"10,11,12,13,14":[d,h],"15,16,17,18,19":[d,i],"20,21,22,23,24":[d,j],"25,26,27,28,29":[d,k],"30,31,32,33,34":[d,f],"35,36,37,38,39":[e,k],"40,41,42,43,44":[e,j],"45,46,47,48,49":[e,i],"50,51,52,53,54":[e,h],"55,56,57,58,59":[e,g]},hours:{"0,12":[c,{7:[1,2,3,4]}],"1,13":[b,{1:[9,10,11]}],"2,14":[c,{2:[1,2,3]}],"3,15":[c,{2:[5,6,7,8]}],"4,16":[c,{3:[1,2,3,4,5,6]}],"5,17":[c,{3:[7,8,9,10,11]}],"6,18":[c,{4:[1,2,3,4]}],"7,19":[c,{4:[6,7,8,9,10]}],"8,20":[c,{5:[1,2,3,4]}],"9,21":[c,{5:[5,6,7,8,9]}],"10,22":[c,{6:[3,4,5,6]}],"11,23":[c,{6:[8,9,10,11]}]},getHour:function(a){var b=a.getHours();return a.getMinutes()>=35?(b+1)%24:b}};a.fritteli.uhr.register("es",l)}(jQuery),function(a){"use strict";var b={1:[1,2,4,5,6]},c={8:[1,2]},d={7:[1,2,3,4,5]},e={10:[4,5,6,7,8]},f={6:[6,7,8,9,10,11]},g={7:[7,8]},h={9:[7,8,9,10]},i={7:[9,10,11]},j={8:[4,5,6,7,8]},k={9:[1,2,3,4,5]},l={9:[1,2,3,4,5,6,7,8,9,10]},m={version:2,language:"Français",letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],permanent:b,minutes:{"5,6,7,8,9":h,"10,11,12,13,14":i,"15,16,17,18,19":[c,j],"20,21,22,23,24":k,"25,26,27,28,29":l,"30,31,32,33,34":[c,e],"35,36,37,38,39":[d,l],"40,41,42,43,44":[d,k],"45,46,47,48,49":[d,g,j],"50,51,52,53,54":[d,i],"55,56,57,58,59":[d,h]},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},f],"2,14":[{1:[8,9,10,11]},f],"3,15":[{2:[7,8,9,10,11]},f],"4,16":[{2:[1,2,3,4,5,6]},f],"5,17":[{4:[8,9,10,11]},f],"6,18":[{4:[5,6,7]},f],"7,19":[{3:[8,9,10,11]},f],"8,20":[{4:[1,2,3,4]},f],"9,21":[{3:[1,2,3,4]},f],"10,22":[{5:[3,4,5]},f],"11,23":[{6:[1,2,3,4]},f],12:{5:[1,2,3,4]}},getHour:function(a){var b=a.getHours();return a.getMinutes()>=35?(b+1)%24:b}};a.fritteli.uhr.register("fr",m)}(jQuery),function(a){"use strict";var b={1:[1,2,3,4,6,7]},c={2:[1,3,4]},d={8:[1]},e={7:[8,9,10,11]},f={10:[7,8,9,10,11]},g={9:[6,7,8,9,10,11]},h={10:[1,2,3,4,5]},i={8:[3,4,6,7,8,9,10,11]},j={9:[1,2,3,4,5]},k={9:[1,2,3,4,5,6,7,8,9,10,11]},l={version:2,language:"Italiano",letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],permanent:[],minutes:{"5,6,7,8,9":[d,g],"10,11,12,13,14":[d,h],"15,16,17,18,19":[d,i],"20,21,22,23,24":[d,j],"25,26,27,28,29":[d,k],"30,31,32,33,34":[d,f],"35,36,37,38,39":[e,k],"40,41,42,43,44":[e,j],"45,46,47,48,49":[e,i],"50,51,52,53,54":[e,h],"55,56,57,58,59":[e,g]},hours:{"0,12":[b,{5:[1,2,3,4,5,6]}],"1,13":[c,{2:[5,6,7]}],"2,14":[b,{2:[9,10,11]}],"3,15":[b,{3:[1,2,3]}],"4,16":[b,{6:[1,2,3,4,5,6,7]}],"5,17":[b,{7:[1,2,3,4,5,6]}],"6,18":[b,{6:[9,10,11]}],"7,19":[b,{5:[7,8,9,10,11]}],"8,20":[b,{3:[4,5,6,7]}],"9,21":[b,{3:[8,9,10,11]}],"10,22":[b,{4:[1,2,3,4,5]}],"11,23":[b,{4:[6,7,8,9,10,11]}]},getHour:function(a){var b=a.getHours();return a.getMinutes()>=35?(b+1)%24:b}};a.fritteli.uhr.register("it",l)}(jQuery),function(a){"use strict";var b={1:[1,2,3,5,6]},c={3:[1,2,3,4]},d={2:[8,9,10,11]},e={4:[8,9,10,11]},f={5:[1,2,3,4]},g={4:[1,2,3,4]},h={1:[8,9,10,11]},i={2:[1,2,3,4]},j={3:[7,8,9,10,11]},k={10:[9,10,11]},l={version:2,language:"Nederlands",letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],permanent:b,minutes:{"0,1,2,3,4":k,"5,6,7,8,9":[h,c],"10,11,12,13,14":[i,c],"15,16,17,18,19":[j,e],"20,21,22,23,24":[i,d,g],"25,26,27,28,29":[h,d,g],"30,31,32,33,34":g,"35,36,37,38,39":[h,c,g],"40,41,42,43,44":[i,c,g],"45,46,47,48,49":[j,f],"50,51,52,53,54":[i,d],"55,56,57,58,59":[h,d]},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},getHour:function(a){var b=a.getHours();return a.getMinutes()>=20?(b+1)%24:b}};a.fritteli.uhr.register("nl",l)}(jQuery); \ No newline at end of file diff --git a/dist/jquery.uhr.langs.js b/dist/jquery.uhr.langs.js new file mode 100644 index 0000000..f84f428 --- /dev/null +++ b/dist/jquery.uhr.langs.js @@ -0,0 +1,652 @@ +/*! uhr - v0.0.1 - 2015-01-13 +* http://bärneruhr.ch/ +* Copyright (c) 2015 Manuel Friedli; Licensed MIT */ +(function($) { + 'use strict'; + var es_ist = {1: [1, 2, 4, 5, 6]}; + var uhr = {10: [9, 10, 11]}; + var nach = {4: [8, 9, 10, 11]}; + var vor = {4: [1, 2, 3]}; + var halb = {5: [1, 2, 3, 4]}; + var fuenf = {1: [8, 9, 10, 11]}; + var zehn = {2: [1, 2, 3, 4]}; + var viertel = {3: [5, 6, 7, 8, 9, 10, 11]}; + var zwanzig = {2: [5, 6, 7, 8, 9, 10, 11]}; + var dreiviertel = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Deutsch', + "letters": [ + 'ESKISTAFÜNF', + 'ZEHNZWANZIG', + 'DREIVIERTEL', + 'VORFUNKNACH', + 'HALBAELFÜNF', + 'EINSXAMZWEI', + 'DREIPMJVIER', + 'SECHSNLACHT', + 'SIEBENZWÖLF', + 'ZEHNEUNKUHR' + ], + "permanent": es_ist, + "minutes": { + "0,1,2,3,4": uhr, + "5,6,7,8,9": [fuenf, nach], + "10,11,12,13,14": [zehn, nach], + "15,16,17,18,19": [viertel, nach], + "20,21,22,23,24": [zwanzig, nach], + "25,26,27,28,29": [fuenf, vor, halb], + "30,31,32,33,34": halb, + "35,36,37,38,39": [fuenf, nach, halb], + "40,41,42,43,44": [zwanzig, vor], + "45,46,47,48,49": dreiviertel, + "50,51,52,53,54": [zehn, vor], + "55,56,57,58,59": [fuenf, vor] + }, + "hours": { + "0,12": {9: [7, 8, 9, 10, 11]}, + "1,13": {6: [1, 2, 3, 4]}, + "2,14": {6: [8, 9, 10, 11]}, + "3,15": {7: [1, 2, 3, 4]}, + "4,16": {7: [8, 9, 10, 11]}, + "5,17": {5: [8, 9, 10, 11]}, + "6,18": {8: [1, 2, 3, 4, 5]}, + "7,19": {9: [1, 2, 3, 4, 5, 6]}, + "8,20": {8: [8, 9, 10, 11]}, + "9,21": {10: [4, 5, 6, 7]}, + "10,22": {10: [1, 2, 3, 4]}, + "11,23": {5: [6, 7, 8]} + } + }; + $.fritteli.uhr.register('de', layout); +}(jQuery)); +(function($) { + 'use strict'; +// hilfsvariablen + var es_isch = {1: [1, 2, 4, 5, 6, 7]}; + var ab = {4: [1, 2]}; + var vor = {3: [9, 10, 11]}; + var haubi = {4: [4, 5, 6, 7, 8]}; + var fuef = {1: [9, 10, 11]}; + var zae = {2: [9, 10, 11]}; + var viertu = {2: [1, 2, 3, 4, 5, 6]}; + var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var layout = { + // version: zur Zeit immer 2 (Pflichtattribut) + "version": 2, + // Sprechender Name der Sprache + "language": 'Bärndütsch', + // Buchstabenfeld als Array von Strings. + "letters": [ + 'ESKISCHAFÜF', + 'VIERTUBFZÄÄ', + 'ZWÄNZGSIVOR', + 'ABOHAUBIEGE', + 'EISZWÖISDRÜ', + 'VIERIFÜFIQT', + 'SÄCHSISIBNI', + 'ACHTINÜNIEL', + 'ZÄNIERBEUFI', + 'ZWÖUFINAUHR' + ], + // Permanent aktive Buchstaben. , vgl. ausführliche Beschreibung bei "minutes". + "permanent": es_isch, + /* + * Minuten: Objekt im folgenden Format: + * { + * : , + * ... + * } + * : String von Komma-separierten Minutenwerten, zu welchem die in angegebenen Buchstaben aktiv sein sollen + * : [ , ...] | + * : { : [ , ... ] } + * : Die Zeile, in welcher die Buchstaben liegen; von oben gezählt, oben ist 1. + * : Die Spalte, in der ein einzelner Buchstabe liegt; von links gezählt, links ist 1. + * Beispiel: + * "minutes": { + * "0,1": {1: [6, 7, 9]}, + * "5": [ {3: [1, 2]}, {4: [10, 11]} ] + * } + * Erklärung: + * Bei Minuten 0 und 1 sind die Buchstaben 6, 7 und 9 der ersten Zeile aktiv. + * Bei Minute 5 sind die Buchstaben 1 und 2 der Zeile 3 sowie die Buchstaben 10 und 11 der Zeile 4 aktiv. + */ + "minutes": { + "5,6,7,8,9": [fuef, ab], + "10,11,12,13,14": [zae, ab], + "15,16,17,18,19": [viertu, ab], + "20,21,22,23,24": [zwaenzg, ab], + "25,26,27,28,29": [fuef, vor, haubi], + "30,31,32,33,34": haubi, + "35,36,37,38,39": [fuef, ab, haubi], + "40,41,42,43,44": [zwaenzg, vor], + "45,46,47,48,49": [viertu, vor], + "50,51,52,53,54": [zae, vor], + "55,56,57,58,59": [fuef, vor] + }, + // Die Stunden; gleiches Format wie bei den Minuten + "hours": { + "0,12": {10: [1, 2, 3, 4, 5, 6]}, + "1,13": {5: [1, 2, 3]}, + "2,14": {5: [4, 5, 6, 7]}, + "3,15": {5: [9, 10, 11]}, + "4,16": {6: [1, 2, 3, 4, 5]}, + "5,17": {6: [6, 7, 8, 9]}, + "6,18": {7: [1, 2, 3, 4, 5, 6]}, + "7,19": {7: [7, 8, 9, 10, 11]}, + "8,20": {8: [1, 2, 3, 4, 5]}, + "9,21": {8: [6, 7, 8, 9]}, + "10,22": {9: [1, 2, 3, 4]}, + "11,23": {9: [8, 9, 10, 11]} + } + }; +// Das Layout bei der Uhr unter dem Code "de_CH" registrieren. + $.fritteli.uhr.register('de_CH', layout); +}(jQuery)); +(function($) { + 'use strict'; + var es_isch = {1: [1, 2, 4, 5, 6, 7]}; + var genau = {3: [7, 8, 9, 10, 11]}; + var ab = {4: [4, 5]}; + var vor = {4: [1, 2, 3]}; + var haubi = {4: [7, 8, 9, 10, 11]}; + var fuef = {1: [9, 10, 11]}; + var zae = {2: [9, 10, 11]}; + var viertu = {2: [1, 2, 3, 4, 5, 6]}; + var zwaenzg = {3: [1, 2, 3, 4, 5, 6]}; + var layout = { + "version": 2, + "language": 'Bärndütsch (genau)', + "letters": [ + 'ESKISCHAFÜF', + 'VIERTUBFZÄÄ', + 'ZWÄNZGGENAU', + 'VORABOHAUBI', + 'EISZWÖISDRÜ', + 'VIERIFÜFIQT', + 'SÄCHSISIBNI', + 'ACHTINÜNIEL', + 'ZÄNIERBEUFI', + 'ZWÖUFINAUHR' + ], + "permanent": es_isch, + "minutes": { + "0": genau, + "5,6,7,8,9": [fuef, ab], + "10,11,12,13,14": [zae, ab], + "15,16,17,18,19": [viertu, ab], + "20,21,22,23,24": [zwaenzg, ab], + "25,26,27,28,29": [fuef, vor, haubi], + "30,31,32,33,34": haubi, + "35,36,37,38,39": [fuef, ab, haubi], + "40,41,42,43,44": [zwaenzg, vor], + "45,46,47,48,49": [viertu, vor], + "50,51,52,53,54": [zae, vor], + "55,56,57,58,59": [fuef, vor] + }, + "hours": { + "0,12": {10: [1, 2, 3, 4, 5, 6]}, + "1,13": {5: [1, 2, 3]}, + "2,14": {5: [4, 5, 6, 7]}, + "3,15": {5: [9, 10, 11]}, + "4,16": {6: [1, 2, 3, 4, 5]}, + "5,17": {6: [6, 7, 8, 9]}, + "6,18": {7: [1, 2, 3, 4, 5, 6]}, + "7,19": {7: [7, 8, 9, 10, 11]}, + "8,20": {8: [1, 2, 3, 4, 5]}, + "9,21": {8: [6, 7, 8, 9]}, + "10,22": {9: [1, 2, 3, 4]}, + "11,23": {9: [8, 9, 10, 11]} + } + }; + $.fritteli.uhr.register('de_CH_genau', layout); +}(jQuery)); +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +(function($) { + 'use strict'; + + var klokken_er = {1: [1, 2, 3, 4, 5, 6, 7, 9, 10]}; + var minutter = {4: [4, 5, 6, 7, 8, 9, 10, 11]}; + var i = {5: [8]}; + var over = {5: [4, 5, 6, 7]}; + var fem = {2: [1, 2, 3]}; + var ti = {4: [1, 2]}; + var kvart = {3: [4, 5, 6, 7, 8]}; + var tyve = {2: [4, 5, 6, 7]}; + var halv = {6: [8, 9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Dansk', + "letters": [ + 'KLOKKENVERO', + 'FEMTYVESKLA', + 'OJEKVARTVAT', + 'TIAMINUTTER', + 'VEMOVERILMF', + 'MONALISHALV', + 'ETTOTREFIRE', + 'FEMSEKSRSYV', + 'OTTERNIMETI', + 'ELLEVEATOLV' + ], + "permanent": klokken_er, + "minutes": { + "5,6,7,8,9": [fem, minutter, over], + "10,11,12,13,14": [ti, minutter, over], + "15,16,17,18,19": [kvart, over], + "20,21,22,23,24": [tyve, minutter, over], + "25,26,27,28,29": [fem, minutter, i, halv], + "30,31,32,33,34": [halv], + "35,36,37,38,39": [fem, minutter, over, halv], + "40,41,42,43,44": [tyve, minutter, i], + "45,46,47,48,49": [kvart, i], + "50,51,52,53,54": [ti, minutter, i], + "55,56,57,58,59": [fem, minutter, i] + }, + "hours": { + "0,12": {10: [8, 9, 10, 11]}, + "1,13": {7: [1, 2]}, + "2,14": {7: [3, 4]}, + "3,15": {7: [5, 6, 7]}, + "4,16": {7: [8, 9, 10, 11]}, + "5,17": {8: [1, 2, 3]}, + "6,18": {8: [4, 5, 6, 7]}, + "7,19": {8: [9, 10, 11]}, + "8,20": {9: [1, 2, 3, 4]}, + "9,21": {9: [6, 7]}, + "10,22": {9: [10, 11]}, + "11,23": {10: [1, 2, 3, 4, 5, 6]} + }, + "getHour": function (date) { + var hour = date.getHours(); + if (date.getMinutes() >= 25) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('dk', layout); +}(jQuery)); +(function($) { + 'use strict'; + var it_is = {1: [1, 2, 4, 5]}; + var half = {4: [1, 2, 3, 4]}; + var to = {4: [10, 11]}; + var past = {5: [1, 2, 3, 4]}; + var o_clock = {10: [5, 6, 7, 8, 9, 10, 11]}; + var five = {3: [7, 8, 9, 10]}; + var ten = {4: [6, 7, 8]}; + var a_quarter = {2: [1, 3, 4, 5, 6, 7, 8, 9]}; + var twenty = {3: [1, 2, 3, 4, 5, 6]}; + var twentyfive = {3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}; + + var layout = { + "version": 2, + "language": 'English', + "letters": [ + 'ITLISBFAMPM', + 'ACQUARTERDC', + 'TWENTYFIVEX', + 'HALFBTENFTO', + 'PASTERUNINE', + 'ONESIXTHREE', + 'FOURFIVETWO', + 'EIGHTELEVEN', + 'SEVENTWELVE', + 'TENSO\'CLOCK' + ], + "permanent": it_is, + "minutes": { + "0,1,2,3,4": o_clock, + "5,6,7,8,9": [five, past], + "10,11,12,13,14": [ten, past], + "15,16,17,18,19": [a_quarter, past], + "20,21,22,23,24": [twenty, past], + "25,26,27,28,29": [twentyfive, past], + "30,31,32,33,34": [half, past], + "35,36,37,38,39": [twentyfive, to], + "40,41,42,43,44": [twenty, to], + "45,46,47,48,49": [a_quarter, to], + "50,51,52,53,54": [ten, to], + "55,56,57,58,59": [five, to] + }, + "hours": { + "0,12": {9: [6, 7, 8, 9, 10, 11]}, + "1,13": {6: [1, 2, 3]}, + "2,14": {7: [9, 10, 11]}, + "3,15": {6: [7, 8, 9, 10, 11]}, + "4,16": {7: [1, 2, 3, 4]}, + "5,17": {7: [5, 6, 7, 8]}, + "6,18": {6: [4, 5, 6]}, + "7,19": {9: [1, 2, 3, 4, 5]}, + "8,20": {8: [1, 2, 3, 4, 5]}, + "9,21": {5: [8, 9, 10, 11]}, + "10,22": {10: [1, 2, 3]}, + "11,23": {8: [6, 7, 8, 9, 10, 11]} + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 35) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('en', layout); +}(jQuery)); +(function($) { + 'use strict'; + var es_la = {1: [1, 2, 6, 7]}; + var son_las = {1: [2, 3, 4, 6, 7, 8]}; + var y = {7: [6]}; + var menos = {7: [7, 8, 9, 10, 11]}; + var media = {10: [1, 2, 3, 4, 5]}; + var cinco = {9: [7, 8, 9, 10, 11]}; + var diez = {8: [8, 9, 10, 11]}; + var cuarto = {10: [6, 7, 8, 9, 10, 11]}; + var veinte = {8: [2, 3, 4, 5, 6, 7]}; + var veinticinco = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Español', + "letters": [ + 'ESONELASUNA', + 'DOSITRESORE', + 'CUATROCINCO', + 'SEISASIETEN', + 'OCHONUEVEYO', + 'LADIEZSONCE', + 'DOCELYMENOS', + 'OVEINTEDIEZ', + 'VEINTICINCO', + 'MEDIACUARTO' + ], + "permanent": [], + "minutes": { + "5,6,7,8,9": [y, cinco], + "10,11,12,13,14": [y, diez], + "15,16,17,18,19": [y, cuarto], + "20,21,22,23,24": [y, veinte], + "25,26,27,28,29": [y, veinticinco], + "30,31,32,33,34": [y, media], + "35,36,37,38,39": [menos, veinticinco], + "40,41,42,43,44": [menos, veinte], + "45,46,47,48,49": [menos, cuarto], + "50,51,52,53,54": [menos, diez], + "55,56,57,58,59": [menos, cinco] + }, + "hours": { + "0,12": [son_las, {7: [1, 2, 3, 4]}], + "1,13": [es_la, {1: [9, 10, 11]}], + "2,14": [son_las, {2: [1, 2, 3]}], + "3,15": [son_las, {2: [5, 6, 7, 8]}], + "4,16": [son_las, {3: [1, 2, 3, 4, 5, 6]}], + "5,17": [son_las, {3: [7, 8, 9, 10, 11]}], + "6,18": [son_las, {4: [1, 2, 3, 4]}], + "7,19": [son_las, {4: [6, 7, 8, 9, 10]}], + "8,20": [son_las, {5: [1, 2, 3, 4]}], + "9,21": [son_las, {5: [5, 6, 7, 8, 9]}], + "10,22": [son_las, {6: [3, 4, 5, 6]}], + "11,23": [son_las, {6: [8, 9, 10, 11]}] + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 35) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('es', layout); +}(jQuery)); + +(function($) { + 'use strict'; + var il_est = {1: [1, 2, 4, 5, 6]}; + var et = {8: [1, 2]}; + var moins = {7: [1, 2, 3, 4, 5]}; + var demie = {10: [4, 5, 6, 7, 8]}; + var heures = {6: [6, 7, 8, 9, 10, 11]}; + var le = {7: [7, 8]}; + var cinq = {9: [7, 8, 9, 10]}; + var dix = {7: [9, 10, 11]}; + var quart = {8: [4, 5, 6, 7, 8]}; + var vingt = {9: [1, 2, 3, 4, 5]}; + var vingtcinq = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}; + + var layout = { + "version": 2, + "language": 'Français', + "letters": [ + 'ILNESTODEUX', + 'QUATRETROIS', + 'NEUFUNESEPT', + 'HUITSIXCINQ', + 'MIDIXMINUIT', + 'ONZERHEURES', + 'MOINSOLEDIX', + 'ETRQUARTPMD', + 'VINGT-CINQU', + 'ETSDEMIEPAM' + ], + "permanent": il_est, + "minutes": { + "5,6,7,8,9": cinq, + "10,11,12,13,14": dix, + "15,16,17,18,19": [et, quart], + "20,21,22,23,24": vingt, + "25,26,27,28,29": vingtcinq, + "30,31,32,33,34": [et, demie], + "35,36,37,38,39": [moins, vingtcinq], + "40,41,42,43,44": [moins, vingt], + "45,46,47,48,49": [moins, le, quart], + "50,51,52,53,54": [moins, dix], + "55,56,57,58,59": [moins, cinq] + }, + "hours": { + "0": {5: [6, 7, 8, 9, 10, 11]}, + "1,13": [ + {3: [5, 6, 7]}, + heures + ], + "2,14": [ + {1: [8, 9, 10, 11]}, + heures + ], + "3,15": [ + {2: [7, 8, 9, 10, 11]}, + heures + ], + "4,16": [ + {2: [1, 2, 3, 4, 5, 6]}, + heures + ], + "5,17": [ + {4: [8, 9, 10, 11]}, + heures + ], + "6,18": [ + {4: [5, 6, 7]}, + heures + ], + "7,19": [ + {3: [8, 9, 10, 11]}, + heures + ], + "8,20": [ + {4: [1, 2, 3, 4]}, + heures + ], + "9,21": [ + {3: [1, 2, 3, 4]}, + heures + ], + "10,22": [ + {5: [3, 4, 5]}, + heures + ], + "11,23": [ + {6: [1, 2, 3, 4]}, + heures + ], + "12": {5: [1, 2, 3, 4]} + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 35) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('fr', layout); +}(jQuery)); +(function($) { + 'use strict'; + var sono_le = {1: [1, 2, 3, 4, 6, 7]}; + var e_l = {2: [1, 3, 4]}; + var e = {8: [1]}; + var meno = {7: [8, 9, 10, 11]}; + var mezza = {10: [7, 8, 9, 10, 11]}; + var cinque = {9: [6, 7, 8, 9, 10, 11]}; + var dieci = {10: [1, 2, 3, 4, 5]}; + var un_quarto = {8: [3, 4, 6, 7, 8, 9, 10, 11]}; + var venti = {9: [1, 2, 3, 4, 5]}; + var venticinque = {9: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Italiano', + "letters": [ + 'SONORLEBORE', + 'ÈRL\'UNASDUE', + 'TREOTTONOVE', + 'DIECIUNDICI', + 'DODICISETTE', + 'QUATTROCSEI', + 'CINQUEAMENO', + 'ECUNOQUARTO', + 'VENTICINQUE', + 'DIECIPMEZZA' + ], + "permanent": [], + "minutes": { + "5,6,7,8,9": [e, cinque], + "10,11,12,13,14": [e, dieci], + "15,16,17,18,19": [e, un_quarto], + "20,21,22,23,24": [e, venti], + "25,26,27,28,29": [e, venticinque], + "30,31,32,33,34": [e, mezza], + "35,36,37,38,39": [meno, venticinque], + "40,41,42,43,44": [meno, venti], + "45,46,47,48,49": [meno, un_quarto], + "50,51,52,53,54": [meno, dieci], + "55,56,57,58,59": [meno, cinque] + }, + "hours": { + "0,12": [sono_le, {5: [1, 2, 3, 4, 5, 6]}], + "1,13": [e_l, {2: [5, 6, 7]}], + "2,14": [sono_le, {2: [9, 10, 11]}], + "3,15": [sono_le, {3: [1, 2, 3]}], + "4,16": [sono_le, {6: [1, 2, 3, 4, 5, 6, 7]}], + "5,17": [sono_le, {7: [1, 2, 3, 4, 5, 6]}], + "6,18": [sono_le, {6: [9, 10, 11]}], + "7,19": [sono_le, {5: [7, 8, 9, 10, 11]}], + "8,20": [sono_le, {3: [4, 5, 6, 7]}], + "9,21": [sono_le, {3: [8, 9, 10, 11]}], + "10,22": [sono_le, {4: [1, 2, 3, 4, 5]}], + "11,23": [sono_le, {4: [6, 7, 8, 9, 10, 11]}] + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 35) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('it', layout); +}(jQuery)); +(function($) { + 'use strict'; + var het_is = {1: [1, 2, 3, 5, 6]}; + var over1 = {3: [1, 2, 3, 4]}; + var voor1 = {2: [8, 9, 10, 11]}; + var over2 = {4: [8, 9, 10, 11]}; + var voor2 = {5: [1, 2, 3, 4]}; + var half = {4: [1, 2, 3, 4]}; + var vijf = {1: [8, 9, 10, 11]}; + var tien = {2: [1, 2, 3, 4]}; + var kwart = {3: [7, 8, 9, 10, 11]}; + var uur = {10: [9, 10, 11]}; + + var layout = { + "version": 2, + "language": 'Nederlands', + "letters": [ + 'HETKISAVIJF', + 'TIENBTZVOOR', + 'OVERMEKWART', + 'HALFSPWOVER', + 'VOORTHGEENS', + 'TWEEPVCDRIE', + 'VIERVIJFZES', + 'ZEVENONEGEN', + 'ACHTTIENELF', + 'TWAALFBFUUR' + ], + "permanent": het_is, + "minutes": { + "0,1,2,3,4": uur, + "5,6,7,8,9": [vijf, over1], + "10,11,12,13,14": [tien, over1], + "15,16,17,18,19": [kwart, over2], + "20,21,22,23,24": [tien, voor1, half], + "25,26,27,28,29": [vijf, voor1, half], + "30,31,32,33,34": half, + "35,36,37,38,39": [vijf, over1, half], + "40,41,42,43,44": [tien, over1, half], + "45,46,47,48,49": [kwart, voor2], + "50,51,52,53,54": [tien, voor1], + "55,56,57,58,59": [vijf, voor1] + }, + "hours": { + "0,12": {10: [1, 2, 3, 4, 5, 6]}, + "1,13": {5: [8, 9, 10]}, + "2,14": {6: [1, 2, 3, 4]}, + "3,15": {6: [8, 9, 10, 11]}, + "4,16": {7: [1, 2, 3, 4]}, + "5,17": {7: [5, 6, 7, 8]}, + "6,18": {7: [9, 10, 11]}, + "7,19": {8: [1, 2, 3, 4, 5]}, + "8,20": {9: [1, 2, 3, 4]}, + "9,21": {8: [7, 8, 9, 10, 11]}, + "10,22": {9: [5, 6, 7, 8]}, + "11,23": {9: [9, 10, 11]} + }, + "getHour": function(date) { + var hour = date.getHours(); + if (date.getMinutes() >= 20) { + return (hour + 1) % 24; + } + return hour; + } + }; + $.fritteli.uhr.register('nl', layout); +}(jQuery)); \ No newline at end of file diff --git a/dist/jquery.uhr.langs.min.js b/dist/jquery.uhr.langs.min.js new file mode 100644 index 0000000..a902bf5 --- /dev/null +++ b/dist/jquery.uhr.langs.min.js @@ -0,0 +1,4 @@ +/*! uhr - v0.0.1 - 2015-01-13 +* http://bärneruhr.ch/ +* Copyright (c) 2015 Manuel Friedli; Licensed MIT */ +!function(a){"use strict";var b={1:[1,2,4,5,6]},c={10:[9,10,11]},d={4:[8,9,10,11]},e={4:[1,2,3]},f={5:[1,2,3,4]},g={1:[8,9,10,11]},h={2:[1,2,3,4]},i={3:[5,6,7,8,9,10,11]},j={2:[5,6,7,8,9,10,11]},k={3:[1,2,3,4,5,6,7,8,9,10,11]},l={version:2,language:"Deutsch",letters:["ESKISTAFÜNF","ZEHNZWANZIG","DREIVIERTEL","VORFUNKNACH","HALBAELFÜNF","EINSXAMZWEI","DREIPMJVIER","SECHSNLACHT","SIEBENZWÖLF","ZEHNEUNKUHR"],permanent:b,minutes:{"0,1,2,3,4":c,"5,6,7,8,9":[g,d],"10,11,12,13,14":[h,d],"15,16,17,18,19":[i,d],"20,21,22,23,24":[j,d],"25,26,27,28,29":[g,e,f],"30,31,32,33,34":f,"35,36,37,38,39":[g,d,f],"40,41,42,43,44":[j,e],"45,46,47,48,49":k,"50,51,52,53,54":[h,e],"55,56,57,58,59":[g,e]},hours:{"0,12":{9:[7,8,9,10,11]},"1,13":{6:[1,2,3,4]},"2,14":{6:[8,9,10,11]},"3,15":{7:[1,2,3,4]},"4,16":{7:[8,9,10,11]},"5,17":{5:[8,9,10,11]},"6,18":{8:[1,2,3,4,5]},"7,19":{9:[1,2,3,4,5,6]},"8,20":{8:[8,9,10,11]},"9,21":{10:[4,5,6,7]},"10,22":{10:[1,2,3,4]},"11,23":{5:[6,7,8]}}};a.fritteli.uhr.register("de",l)}(jQuery),function(a){"use strict";var b={1:[1,2,4,5,6,7]},c={4:[1,2]},d={3:[9,10,11]},e={4:[4,5,6,7,8]},f={1:[9,10,11]},g={2:[9,10,11]},h={2:[1,2,3,4,5,6]},i={3:[1,2,3,4,5,6]},j={version:2,language:"Bärndütsch",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGSIVOR","ABOHAUBIEGE","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:b,minutes:{"5,6,7,8,9":[f,c],"10,11,12,13,14":[g,c],"15,16,17,18,19":[h,c],"20,21,22,23,24":[i,c],"25,26,27,28,29":[f,d,e],"30,31,32,33,34":e,"35,36,37,38,39":[f,c,e],"40,41,42,43,44":[i,d],"45,46,47,48,49":[h,d],"50,51,52,53,54":[g,d],"55,56,57,58,59":[f,d]},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}}};a.fritteli.uhr.register("de_CH",j)}(jQuery),function(a){"use strict";var b={1:[1,2,4,5,6,7]},c={3:[7,8,9,10,11]},d={4:[4,5]},e={4:[1,2,3]},f={4:[7,8,9,10,11]},g={1:[9,10,11]},h={2:[9,10,11]},i={2:[1,2,3,4,5,6]},j={3:[1,2,3,4,5,6]},k={version:2,language:"Bärndütsch (genau)",letters:["ESKISCHAFÜF","VIERTUBFZÄÄ","ZWÄNZGGENAU","VORABOHAUBI","EISZWÖISDRÜ","VIERIFÜFIQT","SÄCHSISIBNI","ACHTINÜNIEL","ZÄNIERBEUFI","ZWÖUFINAUHR"],permanent:b,minutes:{0:c,"5,6,7,8,9":[g,d],"10,11,12,13,14":[h,d],"15,16,17,18,19":[i,d],"20,21,22,23,24":[j,d],"25,26,27,28,29":[g,e,f],"30,31,32,33,34":f,"35,36,37,38,39":[g,d,f],"40,41,42,43,44":[j,e],"45,46,47,48,49":[i,e],"50,51,52,53,54":[h,e],"55,56,57,58,59":[g,e]},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[1,2,3]},"2,14":{5:[4,5,6,7]},"3,15":{5:[9,10,11]},"4,16":{6:[1,2,3,4,5]},"5,17":{6:[6,7,8,9]},"6,18":{7:[1,2,3,4,5,6]},"7,19":{7:[7,8,9,10,11]},"8,20":{8:[1,2,3,4,5]},"9,21":{8:[6,7,8,9]},"10,22":{9:[1,2,3,4]},"11,23":{9:[8,9,10,11]}}};a.fritteli.uhr.register("de_CH_genau",k)}(jQuery),function(a){"use strict";var b={1:[1,2,3,4,5,6,7,9,10]},c={4:[4,5,6,7,8,9,10,11]},d={5:[8]},e={5:[4,5,6,7]},f={2:[1,2,3]},g={4:[1,2]},h={3:[4,5,6,7,8]},i={2:[4,5,6,7]},j={6:[8,9,10,11]},k={version:2,language:"Dansk",letters:["KLOKKENVERO","FEMTYVESKLA","OJEKVARTVAT","TIAMINUTTER","VEMOVERILMF","MONALISHALV","ETTOTREFIRE","FEMSEKSRSYV","OTTERNIMETI","ELLEVEATOLV"],permanent:b,minutes:{"5,6,7,8,9":[f,c,e],"10,11,12,13,14":[g,c,e],"15,16,17,18,19":[h,e],"20,21,22,23,24":[i,c,e],"25,26,27,28,29":[f,c,d,j],"30,31,32,33,34":[j],"35,36,37,38,39":[f,c,e,j],"40,41,42,43,44":[i,c,d],"45,46,47,48,49":[h,d],"50,51,52,53,54":[g,c,d],"55,56,57,58,59":[f,c,d]},hours:{"0,12":{10:[8,9,10,11]},"1,13":{7:[1,2]},"2,14":{7:[3,4]},"3,15":{7:[5,6,7]},"4,16":{7:[8,9,10,11]},"5,17":{8:[1,2,3]},"6,18":{8:[4,5,6,7]},"7,19":{8:[9,10,11]},"8,20":{9:[1,2,3,4]},"9,21":{9:[6,7]},"10,22":{9:[10,11]},"11,23":{10:[1,2,3,4,5,6]}},getHour:function(a){var b=a.getHours();return a.getMinutes()>=25?(b+1)%24:b}};a.fritteli.uhr.register("dk",k)}(jQuery),function(a){"use strict";var b={1:[1,2,4,5]},c={4:[1,2,3,4]},d={4:[10,11]},e={5:[1,2,3,4]},f={10:[5,6,7,8,9,10,11]},g={3:[7,8,9,10]},h={4:[6,7,8]},i={2:[1,3,4,5,6,7,8,9]},j={3:[1,2,3,4,5,6]},k={3:[1,2,3,4,5,6,7,8,9,10]},l={version:2,language:"English",letters:["ITLISBFAMPM","ACQUARTERDC","TWENTYFIVEX","HALFBTENFTO","PASTERUNINE","ONESIXTHREE","FOURFIVETWO","EIGHTELEVEN","SEVENTWELVE","TENSO'CLOCK"],permanent:b,minutes:{"0,1,2,3,4":f,"5,6,7,8,9":[g,e],"10,11,12,13,14":[h,e],"15,16,17,18,19":[i,e],"20,21,22,23,24":[j,e],"25,26,27,28,29":[k,e],"30,31,32,33,34":[c,e],"35,36,37,38,39":[k,d],"40,41,42,43,44":[j,d],"45,46,47,48,49":[i,d],"50,51,52,53,54":[h,d],"55,56,57,58,59":[g,d]},hours:{"0,12":{9:[6,7,8,9,10,11]},"1,13":{6:[1,2,3]},"2,14":{7:[9,10,11]},"3,15":{6:[7,8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{6:[4,5,6]},"7,19":{9:[1,2,3,4,5]},"8,20":{8:[1,2,3,4,5]},"9,21":{5:[8,9,10,11]},"10,22":{10:[1,2,3]},"11,23":{8:[6,7,8,9,10,11]}},getHour:function(a){var b=a.getHours();return a.getMinutes()>=35?(b+1)%24:b}};a.fritteli.uhr.register("en",l)}(jQuery),function(a){"use strict";var b={1:[1,2,6,7]},c={1:[2,3,4,6,7,8]},d={7:[6]},e={7:[7,8,9,10,11]},f={10:[1,2,3,4,5]},g={9:[7,8,9,10,11]},h={8:[8,9,10,11]},i={10:[6,7,8,9,10,11]},j={8:[2,3,4,5,6,7]},k={9:[1,2,3,4,5,6,7,8,9,10,11]},l={version:2,language:"Español",letters:["ESONELASUNA","DOSITRESORE","CUATROCINCO","SEISASIETEN","OCHONUEVEYO","LADIEZSONCE","DOCELYMENOS","OVEINTEDIEZ","VEINTICINCO","MEDIACUARTO"],permanent:[],minutes:{"5,6,7,8,9":[d,g],"10,11,12,13,14":[d,h],"15,16,17,18,19":[d,i],"20,21,22,23,24":[d,j],"25,26,27,28,29":[d,k],"30,31,32,33,34":[d,f],"35,36,37,38,39":[e,k],"40,41,42,43,44":[e,j],"45,46,47,48,49":[e,i],"50,51,52,53,54":[e,h],"55,56,57,58,59":[e,g]},hours:{"0,12":[c,{7:[1,2,3,4]}],"1,13":[b,{1:[9,10,11]}],"2,14":[c,{2:[1,2,3]}],"3,15":[c,{2:[5,6,7,8]}],"4,16":[c,{3:[1,2,3,4,5,6]}],"5,17":[c,{3:[7,8,9,10,11]}],"6,18":[c,{4:[1,2,3,4]}],"7,19":[c,{4:[6,7,8,9,10]}],"8,20":[c,{5:[1,2,3,4]}],"9,21":[c,{5:[5,6,7,8,9]}],"10,22":[c,{6:[3,4,5,6]}],"11,23":[c,{6:[8,9,10,11]}]},getHour:function(a){var b=a.getHours();return a.getMinutes()>=35?(b+1)%24:b}};a.fritteli.uhr.register("es",l)}(jQuery),function(a){"use strict";var b={1:[1,2,4,5,6]},c={8:[1,2]},d={7:[1,2,3,4,5]},e={10:[4,5,6,7,8]},f={6:[6,7,8,9,10,11]},g={7:[7,8]},h={9:[7,8,9,10]},i={7:[9,10,11]},j={8:[4,5,6,7,8]},k={9:[1,2,3,4,5]},l={9:[1,2,3,4,5,6,7,8,9,10]},m={version:2,language:"Français",letters:["ILNESTODEUX","QUATRETROIS","NEUFUNESEPT","HUITSIXCINQ","MIDIXMINUIT","ONZERHEURES","MOINSOLEDIX","ETRQUARTPMD","VINGT-CINQU","ETSDEMIEPAM"],permanent:b,minutes:{"5,6,7,8,9":h,"10,11,12,13,14":i,"15,16,17,18,19":[c,j],"20,21,22,23,24":k,"25,26,27,28,29":l,"30,31,32,33,34":[c,e],"35,36,37,38,39":[d,l],"40,41,42,43,44":[d,k],"45,46,47,48,49":[d,g,j],"50,51,52,53,54":[d,i],"55,56,57,58,59":[d,h]},hours:{0:{5:[6,7,8,9,10,11]},"1,13":[{3:[5,6,7]},f],"2,14":[{1:[8,9,10,11]},f],"3,15":[{2:[7,8,9,10,11]},f],"4,16":[{2:[1,2,3,4,5,6]},f],"5,17":[{4:[8,9,10,11]},f],"6,18":[{4:[5,6,7]},f],"7,19":[{3:[8,9,10,11]},f],"8,20":[{4:[1,2,3,4]},f],"9,21":[{3:[1,2,3,4]},f],"10,22":[{5:[3,4,5]},f],"11,23":[{6:[1,2,3,4]},f],12:{5:[1,2,3,4]}},getHour:function(a){var b=a.getHours();return a.getMinutes()>=35?(b+1)%24:b}};a.fritteli.uhr.register("fr",m)}(jQuery),function(a){"use strict";var b={1:[1,2,3,4,6,7]},c={2:[1,3,4]},d={8:[1]},e={7:[8,9,10,11]},f={10:[7,8,9,10,11]},g={9:[6,7,8,9,10,11]},h={10:[1,2,3,4,5]},i={8:[3,4,6,7,8,9,10,11]},j={9:[1,2,3,4,5]},k={9:[1,2,3,4,5,6,7,8,9,10,11]},l={version:2,language:"Italiano",letters:["SONORLEBORE","ÈRL'UNASDUE","TREOTTONOVE","DIECIUNDICI","DODICISETTE","QUATTROCSEI","CINQUEAMENO","ECUNOQUARTO","VENTICINQUE","DIECIPMEZZA"],permanent:[],minutes:{"5,6,7,8,9":[d,g],"10,11,12,13,14":[d,h],"15,16,17,18,19":[d,i],"20,21,22,23,24":[d,j],"25,26,27,28,29":[d,k],"30,31,32,33,34":[d,f],"35,36,37,38,39":[e,k],"40,41,42,43,44":[e,j],"45,46,47,48,49":[e,i],"50,51,52,53,54":[e,h],"55,56,57,58,59":[e,g]},hours:{"0,12":[b,{5:[1,2,3,4,5,6]}],"1,13":[c,{2:[5,6,7]}],"2,14":[b,{2:[9,10,11]}],"3,15":[b,{3:[1,2,3]}],"4,16":[b,{6:[1,2,3,4,5,6,7]}],"5,17":[b,{7:[1,2,3,4,5,6]}],"6,18":[b,{6:[9,10,11]}],"7,19":[b,{5:[7,8,9,10,11]}],"8,20":[b,{3:[4,5,6,7]}],"9,21":[b,{3:[8,9,10,11]}],"10,22":[b,{4:[1,2,3,4,5]}],"11,23":[b,{4:[6,7,8,9,10,11]}]},getHour:function(a){var b=a.getHours();return a.getMinutes()>=35?(b+1)%24:b}};a.fritteli.uhr.register("it",l)}(jQuery),function(a){"use strict";var b={1:[1,2,3,5,6]},c={3:[1,2,3,4]},d={2:[8,9,10,11]},e={4:[8,9,10,11]},f={5:[1,2,3,4]},g={4:[1,2,3,4]},h={1:[8,9,10,11]},i={2:[1,2,3,4]},j={3:[7,8,9,10,11]},k={10:[9,10,11]},l={version:2,language:"Nederlands",letters:["HETKISAVIJF","TIENBTZVOOR","OVERMEKWART","HALFSPWOVER","VOORTHGEENS","TWEEPVCDRIE","VIERVIJFZES","ZEVENONEGEN","ACHTTIENELF","TWAALFBFUUR"],permanent:b,minutes:{"0,1,2,3,4":k,"5,6,7,8,9":[h,c],"10,11,12,13,14":[i,c],"15,16,17,18,19":[j,e],"20,21,22,23,24":[i,d,g],"25,26,27,28,29":[h,d,g],"30,31,32,33,34":g,"35,36,37,38,39":[h,c,g],"40,41,42,43,44":[i,c,g],"45,46,47,48,49":[j,f],"50,51,52,53,54":[i,d],"55,56,57,58,59":[h,d]},hours:{"0,12":{10:[1,2,3,4,5,6]},"1,13":{5:[8,9,10]},"2,14":{6:[1,2,3,4]},"3,15":{6:[8,9,10,11]},"4,16":{7:[1,2,3,4]},"5,17":{7:[5,6,7,8]},"6,18":{7:[9,10,11]},"7,19":{8:[1,2,3,4,5]},"8,20":{9:[1,2,3,4]},"9,21":{8:[7,8,9,10,11]},"10,22":{9:[5,6,7,8]},"11,23":{9:[9,10,11]}},getHour:function(a){var b=a.getHours();return a.getMinutes()>=20?(b+1)%24:b}};a.fritteli.uhr.register("nl",l)}(jQuery); \ No newline at end of file diff --git a/dist/jquery.uhr.main.js b/dist/jquery.uhr.main.js new file mode 100644 index 0000000..2091a1e --- /dev/null +++ b/dist/jquery.uhr.main.js @@ -0,0 +1,774 @@ +/*! uhr - v0.0.1 - 2015-01-13 +* http://bärneruhr.ch/ +* Copyright (c) 2015 Manuel Friedli; Licensed MIT */ +(function($) { + 'use strict'; + var uhrGlobals = { + "id": 0, + "languages": [], + "themes": [], + registerLanguage: function registerLanguage(code, language) { + var alreadyExists = uhrGlobals.languages.some(function(element) { + if (code === element.code) { + console.error("Error: Language code '" + code + "' cannot be registered for language '" + language.language + + "' because it is already registered for language '" + element.language + "'!"); + return true; + } + return false; + }); + if (!alreadyExists) { + language.code = code; + uhrGlobals.languages.push(language); + } + } + }; + + // auto-detect themes + $('link[rel=stylesheet]').each(function(index, item) { + var styleSheet = $(item); + var styleClass = styleSheet.attr('data-class'); + if (styleClass !== undefined) { + var name = styleSheet.attr('data-name'); + if (name === undefined) { + name = styleClass; + } + uhrGlobals.themes.push({'styleClass': styleClass, 'name': name}); + } + }); + // fall-back if no theme was included + if (uhrGlobals.themes.length === 0) { + uhrGlobals.themes.push({}); + } + + // public interface methods (exported later) + var start = function start() { + if (!isOn.bind(this)()) { + this.timer = window.setInterval(function() { + this.options.time = new Date(); + update.bind(this)(); + }.bind(this), 1000); + update.bind(this)(); + setCookie.bind(this)('uhr-status', 'on'); + } + }; + var stop = function stop() { + if (isOn.bind(this)()) { + window.clearInterval(this.timer); + this.timer = null; + update.bind(this)(); + setCookie.bind(this)('uhr-status', 'off'); + } + }; + var toggle = function toggle() { + if (isOn.bind(this)()) { + this.stop(); + } else { + this.start(); + } + }; + var setLanguage = function setLanguage(languageKey) { + if (languageKey !== this.options.language) { + this.options.language = languageKey; + var renderer = new UhrRenderer(language.bind(this)(), this.element.find('.letterarea')); + renderer.render.bind(this)(function() { + this.currentMinute = -1; + update.bind(this)(); + }.bind(this)); + setCookie.bind(this)('uhr-language', languageKey); + update.bind(this)(); + } + }; + var setTheme = function setTheme(theme) { + if (theme !== this.options.theme) { + this.element.removeClass(this.options.theme).addClass(theme); + $('#uhr-onoffswitch' + this.id).removeClass(this.options.theme).addClass(theme); + this.options.theme = theme; + setCookie.bind(this)('uhr-theme', theme); + } + }; + var setTime = function setTime(time) { + this.currentMinute = -1; + if (time === null) { + this.options.time = new Date(); + } else { + if (this.timer !== null) { + window.clearInterval(this.timer); + } + this.options.time = time; + } + update.bind(this)(); + }; + var setMode = function(mode) { + this.options.mode = mode; + this.currentMinute = -1; + update.bind(this)(); + setCookie.bind(this)('uhr-mode', mode); + }; + var setWidth = function setWidth(width) { + var e = this.element; + e.css('width', width); + var realWidth = e.width(); + e.width(realWidth); + e.height(realWidth); + e.css('font-size', (realWidth / 40) + 'px'); + }; + + // private interface methods + var create = function create() { + this.id = uhrGlobals.id++; + this.timer = null; + this.currentMinute = -1; + var userTime = this.options.time; + var hash, params; + if (this.options.time === undefined) { + this.options.time = new Date(); + } + // parse the URL params + hash = window.location.hash; + if (hash !== undefined && typeof hash === 'string' && hash.charAt(0) === '#') { + hash = hash.substring(1); + hash = decodeURIComponent(hash); + params = hash.split('&'); + params.forEach(function (element) { + var pair = element.split('='); + var key = pair[0]; + var value = pair[1]; + switch (key) { + case 'l': + case 'language': + this.options.language = value; + this.options.force = true; + break; + case 't': + case 'theme': + this.options.theme = value; + this.options.force = true; + break; + case 'm': + case 'mode': + this.options.mode = value; + this.options.force = true; + break; + case 's': + case 'status': + this.options.status = value; + this.options.force = true; + break; + } + }.bind(this)); + } + // end parse the URL params + setupHTML.bind(this)(); + wireFunctionality.bind(this)(); + if (userTime !== undefined) { + this.time(userTime); + } + }; + // private helper methods (not exported) + var toggleConfigScreen = function toggleConfigScreen() { + $('#uhr-controlpanel' + this.id).toggle('fast'); + }; + // set up + var setupHTML = function setupHTML() { + var e = this.element; + // Base clock area + e.addClass('uhr'); + e.empty(); + e.append(''); + e.append(''); + e.append(''); + e.append(''); + e.append('
'); + e.append('
'); + setWidth.bind(this)(this.options.width); + + if (this.options.controls) { + var controlpanel = $('
'); + var content = $('
'); + controlpanel.append(content); + // on/off switch + var toggleSwitch = $('
'); + toggleSwitch.append(''); + toggleSwitch.append(''); + content.append(toggleSwitch); + + // time mode switch + var modeSwitch = $('
'); + modeSwitch.append(''); + modeSwitch.append(''); + content.append(modeSwitch); + // language chooser + if (uhrGlobals.languages.length > 1) { + var languageChooser = $(''); + uhrGlobals.languages.forEach(function(item) { + languageChooser.append(''); + }); + content.append(languageChooser); + } + + // theme chooser + if (uhrGlobals.themes.length > 1) { + var themeChooser = $(''); + uhrGlobals.themes.forEach(function(item) { + themeChooser.append(''); + }); + content.append(themeChooser); + } + var closebutton = $(''); + closebutton.on('click', function() { + $('#uhr-controlpanel' + this.id).hide('fast'); + }.bind(this)); + content.append(closebutton); + e.after(controlpanel); + controlpanel.hide(); + var configlink = $(''); + configlink.on('click', function() { + toggleConfigScreen.bind(this)(); + }.bind(this)); + e.after(configlink); + } + }; + var wireFunctionality = function wireFunctionality() { + // on/off switch + var toggleSwitch = $('#uhr-onoffswitch-checkbox' + this.id); + toggleSwitch.on('click', function() { + this.toggle(); + }.bind(this)); + var status = $.cookie('uhr-status' + this.id); + if (status === undefined || this.options.force) { + status = this.options.status; + } + toggleSwitch.prop('checked', status === 'on'); + if (status === 'on') { + this.start(); + } else { + this.stop(); + } + + // time mode switch + var modeSwitch = $('#uhr-modeswitch-checkbox' + this.id); + modeSwitch.on('click', function() { + if (this.options.mode === 'seconds') { + setMode.bind(this)('normal'); + } else { + setMode.bind(this)('seconds'); + } + }.bind(this)); + + var mode = $.cookie('uhr-mode' + this.id); + if (mode === undefined || this.options.force) { + mode = this.options.mode; + } + modeSwitch.prop('checked', mode !== 'seconds'); + if (mode === 'seconds') { + setMode.bind(this)('seconds'); + } else { + setMode.bind(this)('normal'); + } + + // language chooser + var languageChooser = $('#uhr-languagechooser' + this.id); + languageChooser.on('change', function() { + var languageKey = $('#uhr-languagechooser' + this.id).val(); + this.language(languageKey); + }.bind(this)); + var selectedLanguage = $.cookie('uhr-language' + this.id); + if (selectedLanguage === undefined || this.options.force) { + selectedLanguage = this.options.language; + } + var found = uhrGlobals.languages.some(function(item) { + return selectedLanguage === item.code; + }); + if (!found) { + var fallbackLanguage; + if (uhrGlobals.languages.length > 0) { + fallbackLanguage = uhrGlobals.languages[0].code; + } else { + fallbackLanguage = ''; + } + console.warn("Language '" + selectedLanguage + "' not found! Using fallback '" + fallbackLanguage + "'"); + selectedLanguage = fallbackLanguage; + } + languageChooser.val(selectedLanguage); + this.options.language = ""; + this.language(selectedLanguage); + + // theme chooser + var themeChooser = $('#uhr-themechooser' + this.id); + themeChooser.on('change', function() { + var themeKey = $('#uhr-themechooser' + this.id).val(); + this.theme(themeKey); + }.bind(this)); + var selectedTheme = $.cookie('uhr-theme' + this.id); + if (selectedTheme === undefined || this.options.force) { + selectedTheme = this.options.theme; + } + found = uhrGlobals.themes.some(function(item) { + return selectedTheme === item.styleClass; + }); + if (!found) { + var fallbackTheme = uhrGlobals.themes[0].styleClass; + console.warn("Theme '" + selectedTheme + "' not found! Using fallback '" + fallbackTheme + "'"); + selectedTheme = fallbackTheme; + } + themeChooser.val(selectedTheme); + this.options.theme = ""; + this.theme(selectedTheme); + if (this.options.autoresize) { + $(window).on('resize', function() { + var $e = this.element; + var $parent = $e.parent(); + var $window = $(window); + var parentWidth = $parent.width(); + var parentHeight = $parent.height(); + var windowWidth = $window.width(); + var windowHeight = $window.height(); + var size = Math.min(parentWidth, parentHeight, windowWidth, windowHeight) + 'px'; + setWidth.bind(this)(size); + }.bind(this)); + } + }; + var setCookie = function setCookie(cookieName, cookieValue) { + var options = {}; + if (this.options.cookiePath !== undefined) { + options = {expires: 365, path: this.options.cookiePath}; + } else { + options = {expires: 365}; + } + $.cookie(cookieName + this.id, cookieValue, options); + }; + + // business logic + var isOn = function isOn() { + return this.timer !== null; + }; + var update = function update() { + if (isOn.bind(this)()) { + var time = this.options.time; + if (!language.bind(this)().hasOwnProperty('seconds') && this.options.mode !== 'seconds') { + if (time.getMinutes() === this.currentMinute) { + return; + } + this.currentMinute = time.getMinutes(); + } + show.bind(this)(time); + } else { + clear.bind(this)(); + this.currentMinute = -1; + } + }; + var show = function show(time) { + var second = getSecond.bind(this)(time); + var dotMinute = getDotMinute.bind(this)(time); + var hour = getHour.bind(this)(time); + var coarseMinute = getCoarseMinute.bind(this)(time); + clear.bind(this)(); + if (this.options.mode === 'seconds') { + highlight.bind(this)('second' + second); + } else { + highlight.bind(this)('on'); + for (var i = 1; i <= dotMinute; i++) { + highlight.bind(this)('dot' + i); + } + highlight.bind(this)('minute' + coarseMinute); + highlight.bind(this)('hour' + hour); + } + }; + var highlight = function highlight(itemClass) { + this.element.find('.item.' + itemClass).addClass('active'); + }; + var clear = function clear() { + this.element.find('.item').removeClass('active'); + }; + var getSecond = function getSecond(date) { + if (typeof language.bind(this)().getSeconds === 'function') { + return language.bind(this)().getSeconds(date); + } + return date.getSeconds(); + }; + var getDotMinute = function getDotMinute(date) { + if (typeof language.bind(this)().getDotMinute === 'function') { + return language.bind(this)().getDotMinute(date); + } + var minutes = date.getMinutes(); + return minutes % 5; + }; + var getCoarseMinute = function getCoarseMinute(date) { + if (typeof language.bind(this)().getCoarseMinute === 'function') { + return language.bind(this)().getCoarseMinute(date); + } + return date.getMinutes(); + }; + var getHour = function getHour(date) { + if (typeof language.bind(this)().getHour === 'function') { + return language.bind(this)().getHour(date); + } + var hour = date.getHours(); + if (date.getMinutes() >= 25) { + return (hour + 1) % 24; + } + return hour; + }; + var language = function language() { + var matchingLanguages = uhrGlobals.languages.filter(function(element) { + return (element.code === this.options.language); + }, this); + if (matchingLanguages.length > 0) { + return matchingLanguages[0]; + } + // fallback: return empty object + return {}; + }; + + $.widget("fritteli.uhr", { + "options": { + width: '100%', + status: 'on', + language: 'de_CH', + theme: uhrGlobals.themes[0].styleClass, + force: false, + controls: true, + cookiePath: undefined, + autoresize: true, + mode: 'normal' + }, + "start": start, + "stop": stop, + "toggle": toggle, + "language": setLanguage, + "theme": setTheme, + "time": setTime, + "mode": setMode, + "width": setWidth, + // constructor method + "_create": create + }); + $.fritteli.uhr.register = uhrGlobals.registerLanguage; + /** + * Hilfsklasse zum Rendern der Uhr. + * @param layout Layout-Objekt, das gerendert werden soll. + * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. + */ + function UhrRenderer(layout, renderarea) { + this.render = function render(beforeshow) { + if (layout.parsed === undefined) { + switch (layout.version) { + case 2: + var delegate = new UhrRendererV2Delegate(layout); + var parsedLayout = delegate.parse(); + Object.defineProperty(layout, "parsed", {"value": parsedLayout, "writable": false, "configurable": false}); + break; + default: + console.warn("Unknown layout version: '" + layout.version + "'"); + return; + } + } + var letters = layout.parsed; + renderarea.fadeOut('fast', function() { + renderarea.empty(); + letters.forEach(function(line, index, array) { + line.forEach(function(letter) { + renderarea.append(letter.toString()); + }); + if (index < array.length - 1) { + renderarea.append('
'); + } + }); + if (typeof beforeshow === 'function') { + beforeshow(); + } + renderarea.fadeIn('fast'); + }); + }; + } + + function UhrRendererV2Delegate(layout) { + var vorne0 = { + 3: [2, 3, 4], + 4: [1, 5], + 5: [1, 4, 5], + 6: [1, 3, 5], + 7: [1, 2, 5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten0 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 10, 11], + 6: [7, 9, 11], + 7: [7, 8, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var vorne1 = { + 3: [3], + 4: [2, 3], + 5: [3], + 6: [3], + 7: [3], + 8: [3], + 9: [2, 3, 4] + }; + var hinten1 = { + 3: [9], + 4: [8, 9], + 5: [9], + 6: [9], + 7: [9], + 8: [9], + 9: [8, 9, 10] + }; + var vorne2 = { + 3: [2, 3, 4], + 4: [1, 5], + 5: [5], + 6: [4], + 7: [3], + 8: [2], + 9: [1, 2, 3, 4, 5] + }; + var hinten2 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [11], + 6: [10], + 7: [9], + 8: [8], + 9: [7, 8, 9, 10, 11] + }; + var vorne3 = { + 3: [1, 2, 3, 4, 5], + 4: [4], + 5: [3], + 6: [4], + 7: [5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten3 = { + 3: [7, 8, 9, 10, 11], + 4: [10], + 5: [9], + 6: [10], + 7: [11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var vorne4 = { + 3: [4], + 4: [3, 4], + 5: [2, 4], + 6: [1, 4], + 7: [1, 2, 3, 4, 5], + 8: [4], + 9: [4] + }; + var hinten4 = { + 3: [10], + 4: [9, 10], + 5: [8, 10], + 6: [7, 10], + 7: [7, 8, 9, 10, 11], + 8: [10], + 9: [10] + }; + var vorne5 = { + 3: [1, 2, 3, 4, 5], + 4: [1], + 5: [1, 2, 3, 4], + 6: [5], + 7: [5], + 8: [1, 5], + 9: [2, 3, 4] + }; + var hinten5 = { + 3: [7, 8, 9, 10, 11], + 4: [7], + 5: [7, 8, 9, 10], + 6: [11], + 7: [11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten6 = { + 3: [9, 10], + 4: [8], + 5: [7], + 6: [7, 8, 9, 10], + 7: [7, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten7 = { + 3: [7, 8, 9, 10, 11], + 4: [11], + 5: [10], + 6: [9], + 7: [8], + 8: [8], + 9: [8] + }; + var hinten8 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 11], + 6: [8, 9, 10], + 7: [7, 11], + 8: [7, 11], + 9: [8, 9, 10] + }; + var hinten9 = { + 3: [8, 9, 10], + 4: [7, 11], + 5: [7, 11], + 6: [8, 9, 10, 11], + 7: [11], + 8: [10], + 9: [8, 9] + }; + var seconds= { + "0": [vorne0, hinten0], + "1": [vorne0, hinten1], + "2": [vorne0, hinten2], + "3": [vorne0, hinten3], + "4": [vorne0, hinten4], + "5": [vorne0, hinten5], + "6": [vorne0, hinten6], + "7": [vorne0, hinten7], + "8": [vorne0, hinten8], + "9": [vorne0, hinten9], + "10": [vorne1, hinten0], + "11": [vorne1, hinten1], + "12": [vorne1, hinten2], + "13": [vorne1, hinten3], + "14": [vorne1, hinten4], + "15": [vorne1, hinten5], + "16": [vorne1, hinten6], + "17": [vorne1, hinten7], + "18": [vorne1, hinten8], + "19": [vorne1, hinten9], + "20": [vorne2, hinten0], + "21": [vorne2, hinten1], + "22": [vorne2, hinten2], + "23": [vorne2, hinten3], + "24": [vorne2, hinten4], + "25": [vorne2, hinten5], + "26": [vorne2, hinten6], + "27": [vorne2, hinten7], + "28": [vorne2, hinten8], + "29": [vorne2, hinten9], + "30": [vorne3, hinten0], + "31": [vorne3, hinten1], + "32": [vorne3, hinten2], + "33": [vorne3, hinten3], + "34": [vorne3, hinten4], + "35": [vorne3, hinten5], + "36": [vorne3, hinten6], + "37": [vorne3, hinten7], + "38": [vorne3, hinten8], + "39": [vorne3, hinten9], + "40": [vorne4, hinten0], + "41": [vorne4, hinten1], + "42": [vorne4, hinten2], + "43": [vorne4, hinten3], + "44": [vorne4, hinten4], + "45": [vorne4, hinten5], + "46": [vorne4, hinten6], + "47": [vorne4, hinten7], + "48": [vorne4, hinten8], + "49": [vorne4, hinten9], + "50": [vorne5, hinten0], + "51": [vorne5, hinten1], + "52": [vorne5, hinten2], + "53": [vorne5, hinten3], + "54": [vorne5, hinten4], + "55": [vorne5, hinten5], + "56": [vorne5, hinten6], + "57": [vorne5, hinten7], + "58": [vorne5, hinten8], + "59": [vorne5, hinten9] + }; + + function parseArrayOrObject(letters, styleClass, input) { + if (typeof input !== 'undefined' && input !== null) { + if (Array.isArray(input)) { + input.forEach(function(item) { + parseObject(letters, styleClass, item); + }); + } else { + parseObject(letters, styleClass, input); + } + } + } + + function parseObject(letters, styleClass, object) { + if (typeof object !== 'undefined' && object !== null) { + Object.keys(object).forEach(function(y) { + var highlightLetters = object[y]; + highlightLetters.forEach(function(x) { + letters[y - 1][x - 1].addStyle(styleClass); + }); + }); + } + } + + function parseTimeDefinition(letters, styleClass, definition) { + if (typeof definition !== 'undefined' && definition !== null) { + Object.keys(definition).forEach(function(listString) { + var array = listString.split(','); + var highlightLetters = definition[listString]; + array.forEach(function(item) { + parseArrayOrObject(letters, styleClass + item, highlightLetters); + }); + }); + } + } + + this.parse = function parse() { + var letters = []; + layout.letters.forEach(function(string) { + var line = []; + for (var c = 0; c < string.length; c++) { + var character = new Letter(string[c]); + line.push(character); + } + letters.push(line); + }); + parseArrayOrObject(letters, 'on', layout.permanent); + if (typeof layout.seconds !== 'undefined' && layout.seconds !== null) { + parseTimeDefinition(letters, 'second', layout.seconds); + } else { + parseTimeDefinition(letters, 'second', seconds); + } + parseTimeDefinition(letters, 'minute', layout.minutes); + parseTimeDefinition(letters, 'hour', layout.hours); + return letters; + }; + } + + /** + * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. + * @param value Der Buchstabe, der Dargestellt werden soll. + * @param style Die CSS-Styleklassen des Buchstabens. + */ + function Letter(value, style) { + var myValue = value; + var myStyle = style || ''; + this.addStyle = function(style) { + if (myStyle === '') { + myStyle = style; + } else { + myStyle += ' ' + style; + } + }; + this.toString = function() { + return '' + myValue + ''; + }; + } +})(jQuery); diff --git a/dist/jquery.uhr.min.js b/dist/jquery.uhr.min.js new file mode 100644 index 0000000..098dae9 --- /dev/null +++ b/dist/jquery.uhr.min.js @@ -0,0 +1,4 @@ +/*! uhr - v0.0.1 - 2015-01-13 +* http://bärneruhr.ch/ +* Copyright (c) 2015 Manuel Friedli; Licensed MIT */ +!function(a){"use strict";function b(a,b){this.render=function(d){if(void 0===a.parsed)switch(a.version){case 2:var e=new c(a),f=e.parse();Object.defineProperty(a,"parsed",{value:f,writable:!1,configurable:!1});break;default:return void console.warn("Unknown layout version: '"+a.version+"'")}var g=a.parsed;b.fadeOut("fast",function(){b.empty(),g.forEach(function(a,c,d){a.forEach(function(a){b.append(a.toString())}),c")}),"function"==typeof d&&d(),b.fadeIn("fast")})}}function c(a){function b(a,b,d){"undefined"!=typeof d&&null!==d&&(Array.isArray(d)?d.forEach(function(d){c(a,b,d)}):c(a,b,d))}function c(a,b,c){"undefined"!=typeof c&&null!==c&&Object.keys(c).forEach(function(d){var e=c[d];e.forEach(function(c){a[d-1][c-1].addStyle(b)})})}function e(a,c,d){"undefined"!=typeof d&&null!==d&&Object.keys(d).forEach(function(e){var f=e.split(","),g=d[e];f.forEach(function(d){b(a,c+d,g)})})}var f={3:[2,3,4],4:[1,5],5:[1,4,5],6:[1,3,5],7:[1,2,5],8:[1,5],9:[2,3,4]},g={3:[8,9,10],4:[7,11],5:[7,10,11],6:[7,9,11],7:[7,8,11],8:[7,11],9:[8,9,10]},h={3:[3],4:[2,3],5:[3],6:[3],7:[3],8:[3],9:[2,3,4]},i={3:[9],4:[8,9],5:[9],6:[9],7:[9],8:[9],9:[8,9,10]},j={3:[2,3,4],4:[1,5],5:[5],6:[4],7:[3],8:[2],9:[1,2,3,4,5]},k={3:[8,9,10],4:[7,11],5:[11],6:[10],7:[9],8:[8],9:[7,8,9,10,11]},l={3:[1,2,3,4,5],4:[4],5:[3],6:[4],7:[5],8:[1,5],9:[2,3,4]},m={3:[7,8,9,10,11],4:[10],5:[9],6:[10],7:[11],8:[7,11],9:[8,9,10]},n={3:[4],4:[3,4],5:[2,4],6:[1,4],7:[1,2,3,4,5],8:[4],9:[4]},o={3:[10],4:[9,10],5:[8,10],6:[7,10],7:[7,8,9,10,11],8:[10],9:[10]},p={3:[1,2,3,4,5],4:[1],5:[1,2,3,4],6:[5],7:[5],8:[1,5],9:[2,3,4]},q={3:[7,8,9,10,11],4:[7],5:[7,8,9,10],6:[11],7:[11],8:[7,11],9:[8,9,10]},r={3:[9,10],4:[8],5:[7],6:[7,8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},s={3:[7,8,9,10,11],4:[11],5:[10],6:[9],7:[8],8:[8],9:[8]},t={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10],7:[7,11],8:[7,11],9:[8,9,10]},u={3:[8,9,10],4:[7,11],5:[7,11],6:[8,9,10,11],7:[11],8:[10],9:[8,9]},v={0:[f,g],1:[f,i],2:[f,k],3:[f,m],4:[f,o],5:[f,q],6:[f,r],7:[f,s],8:[f,t],9:[f,u],10:[h,g],11:[h,i],12:[h,k],13:[h,m],14:[h,o],15:[h,q],16:[h,r],17:[h,s],18:[h,t],19:[h,u],20:[j,g],21:[j,i],22:[j,k],23:[j,m],24:[j,o],25:[j,q],26:[j,r],27:[j,s],28:[j,t],29:[j,u],30:[l,g],31:[l,i],32:[l,k],33:[l,m],34:[l,o],35:[l,q],36:[l,r],37:[l,s],38:[l,t],39:[l,u],40:[n,g],41:[n,i],42:[n,k],43:[n,m],44:[n,o],45:[n,q],46:[n,r],47:[n,s],48:[n,t],49:[n,u],50:[p,g],51:[p,i],52:[p,k],53:[p,m],54:[p,o],55:[p,q],56:[p,r],57:[p,s],58:[p,t],59:[p,u]};this.parse=function(){var c=[];return a.letters.forEach(function(a){for(var b=[],e=0;e'+c+""}}var e={id:0,languages:[],themes:[],registerLanguage:function(a,b){var c=e.languages.some(function(c){return a===c.code?(console.error("Error: Language code '"+a+"' cannot be registered for language '"+b.language+"' because it is already registered for language '"+c.language+"'!"),!0):!1});c||(b.code=a,e.languages.push(b))}};a("link[rel=stylesheet]").each(function(b,c){var d=a(c),f=d.attr("data-class");if(void 0!==f){var g=d.attr("data-name");void 0===g&&(g=f),e.themes.push({styleClass:f,name:g})}}),0===e.themes.length&&e.themes.push({});var f=function(){s.bind(this)()||(this.timer=window.setInterval(function(){this.options.time=new Date,t.bind(this)()}.bind(this),1e3),t.bind(this)(),r.bind(this)("uhr-status","on"))},g=function(){s.bind(this)()&&(window.clearInterval(this.timer),this.timer=null,t.bind(this)(),r.bind(this)("uhr-status","off"))},h=function(){s.bind(this)()?this.stop():this.start()},i=function(a){if(a!==this.options.language){this.options.language=a;var c=new b(B.bind(this)(),this.element.find(".letterarea"));c.render.bind(this)(function(){this.currentMinute=-1,t.bind(this)()}.bind(this)),r.bind(this)("uhr-language",a),t.bind(this)()}},j=function(b){b!==this.options.theme&&(this.element.removeClass(this.options.theme).addClass(b),a("#uhr-onoffswitch"+this.id).removeClass(this.options.theme).addClass(b),this.options.theme=b,r.bind(this)("uhr-theme",b))},k=function(a){this.currentMinute=-1,null===a?this.options.time=new Date:(null!==this.timer&&window.clearInterval(this.timer),this.options.time=a),t.bind(this)()},l=function(a){this.options.mode=a,this.currentMinute=-1,t.bind(this)(),r.bind(this)("uhr-mode",a)},m=function(a){var b=this.element;b.css("width",a);var c=b.width();b.width(c),b.height(c),b.css("font-size",c/40+"px")},n=function(){this.id=e.id++,this.timer=null,this.currentMinute=-1;var a,b,c=this.options.time;void 0===this.options.time&&(this.options.time=new Date),a=window.location.hash,void 0!==a&&"string"==typeof a&&"#"===a.charAt(0)&&(a=a.substring(1),a=decodeURIComponent(a),b=a.split("&"),b.forEach(function(a){var b=a.split("="),c=b[0],d=b[1];switch(c){case"l":case"language":this.options.language=d,this.options.force=!0;break;case"t":case"theme":this.options.theme=d,this.options.force=!0;break;case"m":case"mode":this.options.mode=d,this.options.force=!0;break;case"s":case"status":this.options.status=d,this.options.force=!0}}.bind(this))),p.bind(this)(),q.bind(this)(),void 0!==c&&this.time(c)},o=function(){a("#uhr-controlpanel"+this.id).toggle("fast")},p=function(){var b=this.element;if(b.addClass("uhr"),b.empty(),b.append(''),b.append(''),b.append(''),b.append(''),b.append('
'),b.append('
'),m.bind(this)(this.options.width),this.options.controls){var c=a('
'),d=a('
');c.append(d);var f=a('
');f.append(''),f.append(''),d.append(f);var g=a('
');if(g.append(''),g.append(''),d.append(g),e.languages.length>1){var h=a('');e.languages.forEach(function(a){h.append('")}),d.append(h)}if(e.themes.length>1){var i=a('');e.themes.forEach(function(a){i.append('")}),d.append(i)}var j=a('');j.on("click",function(){a("#uhr-controlpanel"+this.id).hide("fast")}.bind(this)),d.append(j),b.after(c),c.hide();var k=a('');k.on("click",function(){o.bind(this)()}.bind(this)),b.after(k)}},q=function(){var b=a("#uhr-onoffswitch-checkbox"+this.id);b.on("click",function(){this.toggle()}.bind(this));var c=a.cookie("uhr-status"+this.id);(void 0===c||this.options.force)&&(c=this.options.status),b.prop("checked","on"===c),"on"===c?this.start():this.stop();var d=a("#uhr-modeswitch-checkbox"+this.id);d.on("click",function(){l.bind(this)("seconds"===this.options.mode?"normal":"seconds")}.bind(this));var f=a.cookie("uhr-mode"+this.id);(void 0===f||this.options.force)&&(f=this.options.mode),d.prop("checked","seconds"!==f),l.bind(this)("seconds"===f?"seconds":"normal");var g=a("#uhr-languagechooser"+this.id);g.on("change",function(){var b=a("#uhr-languagechooser"+this.id).val();this.language(b)}.bind(this));var h=a.cookie("uhr-language"+this.id);(void 0===h||this.options.force)&&(h=this.options.language);var i=e.languages.some(function(a){return h===a.code});if(!i){var j;j=e.languages.length>0?e.languages[0].code:"",console.warn("Language '"+h+"' not found! Using fallback '"+j+"'"),h=j}g.val(h),this.options.language="",this.language(h);var k=a("#uhr-themechooser"+this.id);k.on("change",function(){var b=a("#uhr-themechooser"+this.id).val();this.theme(b)}.bind(this));var n=a.cookie("uhr-theme"+this.id);if((void 0===n||this.options.force)&&(n=this.options.theme),i=e.themes.some(function(a){return n===a.styleClass}),!i){var o=e.themes[0].styleClass;console.warn("Theme '"+n+"' not found! Using fallback '"+o+"'"),n=o}k.val(n),this.options.theme="",this.theme(n),this.options.autoresize&&a(window).on("resize",function(){var b=this.element,c=b.parent(),d=a(window),e=c.width(),f=c.height(),g=d.width(),h=d.height(),i=Math.min(e,f,g,h)+"px";m.bind(this)(i)}.bind(this))},r=function(b,c){var d={};d=void 0!==this.options.cookiePath?{expires:365,path:this.options.cookiePath}:{expires:365},a.cookie(b+this.id,c,d)},s=function(){return null!==this.timer},t=function(){if(s.bind(this)()){var a=this.options.time;if(!B.bind(this)().hasOwnProperty("seconds")&&"seconds"!==this.options.mode){if(a.getMinutes()===this.currentMinute)return;this.currentMinute=a.getMinutes()}u.bind(this)(a)}else w.bind(this)(),this.currentMinute=-1},u=function(a){var b=x.bind(this)(a),c=y.bind(this)(a),d=A.bind(this)(a),e=z.bind(this)(a);if(w.bind(this)(),"seconds"===this.options.mode)v.bind(this)("second"+b);else{v.bind(this)("on");for(var f=1;c>=f;f++)v.bind(this)("dot"+f);v.bind(this)("minute"+e),v.bind(this)("hour"+d)}},v=function(a){this.element.find(".item."+a).addClass("active")},w=function(){this.element.find(".item").removeClass("active")},x=function(a){return"function"==typeof B.bind(this)().getSeconds?B.bind(this)().getSeconds(a):a.getSeconds()},y=function(a){if("function"==typeof B.bind(this)().getDotMinute)return B.bind(this)().getDotMinute(a);var b=a.getMinutes();return b%5},z=function(a){return"function"==typeof B.bind(this)().getCoarseMinute?B.bind(this)().getCoarseMinute(a):a.getMinutes()},A=function(a){if("function"==typeof B.bind(this)().getHour)return B.bind(this)().getHour(a);var b=a.getHours();return a.getMinutes()>=25?(b+1)%24:b},B=function(){var a=e.languages.filter(function(a){return a.code===this.options.language},this);return a.length>0?a[0]:{}};a.widget("fritteli.uhr",{options:{width:"100%",status:"on",language:"de_CH",theme:e.themes[0].styleClass,force:!1,controls:!0,cookiePath:void 0,autoresize:!0,mode:"normal"},start:f,stop:g,toggle:h,language:i,theme:j,time:k,mode:l,width:m,_create:n}),a.fritteli.uhr.register=e.registerLanguage}(jQuery); \ No newline at end of file