diff --git a/.jshintignore b/.jshintignore
deleted file mode 100644
index e69de29..0000000
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index e30a546..0000000
--- a/.jshintrc
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "bitwise": false,
- "boss": true,
- "browser": true,
- "camelcase": true,
- "curly": true,
- "devel": true,
- "eqeqeq": true,
- "es3": true,
- "expr": true,
- "forin": true,
- "freeze": true,
- "globalstrict": false,
- "immed": true,
- "indent": 2,
- "jquery": true,
- "latedef": true,
- "laxcomma": true,
- "multistr": false,
- "newcap": true,
- "noarg": true,
- "noempty": true,
- "nonew": true,
- "notypeof": false,
- "plusplus": false,
- "quotmark": "single",
- "regexp": true,
- "strict": true,
- "trailing": true,
- "undef": true,
- "unused": true,
- "maxparams": 5,
- "maxdepth": 4,
- "maxstatements": 20,
- "maxcomplexity": 10,
- "globals": {"module": true, "require": true, "suite": true, "test": true, "__dirname": true}
-}
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index ad8d771..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,14 +0,0 @@
-# If you have OpenSSL installed, we recommend updating
-# the following line to use "https"
-source 'http://rubygems.org'
-
-gem "middleman", "~>3.3.2"
-
-# Live-reloading plugin
-gem "middleman-livereload", "~> 3.1.0"
-
-# For faster file watcher updates on Windows:
-gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw]
-
-# Windows does not come with time zone data
-gem "tzinfo-data", platforms: [:mswin, :mingw]
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644
index 5517e4c..0000000
--- a/Gemfile.lock
+++ /dev/null
@@ -1,120 +0,0 @@
-GEM
- remote: http://rubygems.org/
- specs:
- activesupport (4.0.4)
- i18n (~> 0.6, >= 0.6.9)
- minitest (~> 4.2)
- multi_json (~> 1.3)
- thread_safe (~> 0.1)
- tzinfo (~> 0.3.37)
- chunky_png (1.3.0)
- coffee-script (2.2.0)
- coffee-script-source
- execjs
- coffee-script-source (1.7.0)
- compass (0.12.6)
- chunky_png (~> 1.2)
- fssm (>= 0.2.7)
- sass (~> 3.2.19)
- compass-import-once (1.0.4)
- sass (>= 3.2, < 3.5)
- em-websocket (0.5.1)
- eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
- erubis (2.7.0)
- eventmachine (1.0.3)
- execjs (2.0.2)
- ffi (1.9.3)
- fssm (0.2.10)
- haml (4.0.5)
- tilt
- hike (1.2.3)
- hooks (0.4.0)
- uber (~> 0.0.4)
- http_parser.rb (0.6.0)
- i18n (0.6.9)
- json (1.8.1)
- kramdown (1.3.3)
- listen (1.3.1)
- rb-fsevent (>= 0.9.3)
- rb-inotify (>= 0.9)
- rb-kqueue (>= 0.2)
- middleman (3.3.2)
- coffee-script (~> 2.2.0)
- compass (>= 0.12.4)
- compass-import-once (~> 1.0.4)
- execjs (~> 2.0)
- haml (>= 4.0.5)
- kramdown (~> 1.2)
- middleman-core (= 3.3.2)
- middleman-sprockets (>= 3.1.2)
- sass (>= 3.2.17, < 4.0)
- uglifier (~> 2.5)
- middleman-core (3.3.2)
- activesupport (~> 4.0.1)
- bundler (~> 1.1)
- erubis
- hooks (~> 0.3)
- i18n (~> 0.6.9)
- listen (~> 1.1)
- padrino-helpers (~> 0.12.1)
- rack (>= 1.4.5, < 2.0)
- rack-test (~> 0.6.2)
- thor (>= 0.15.2, < 2.0)
- tilt (~> 1.4.1, < 2.0)
- middleman-livereload (3.1.1)
- em-websocket (>= 0.2.0)
- middleman-core (>= 3.0.2)
- multi_json (~> 1.0)
- rack-livereload
- middleman-sprockets (3.3.3)
- middleman-core (>= 3.2)
- sprockets (~> 2.2)
- sprockets-helpers (~> 1.1.0)
- sprockets-sass (~> 1.1.0)
- minitest (4.7.5)
- multi_json (1.9.3)
- padrino-helpers (0.12.1)
- i18n (~> 0.6, >= 0.6.7)
- padrino-support (= 0.12.1)
- tilt (~> 1.4.1)
- padrino-support (0.12.1)
- activesupport (>= 3.1)
- rack (1.5.2)
- rack-livereload (0.3.15)
- rack
- rack-test (0.6.2)
- rack (>= 1.0)
- rb-fsevent (0.9.4)
- rb-inotify (0.9.4)
- ffi (>= 0.5.0)
- rb-kqueue (0.2.2)
- ffi (>= 0.5.0)
- sass (3.2.19)
- sprockets (2.12.1)
- hike (~> 1.2)
- multi_json (~> 1.0)
- rack (~> 1.0)
- tilt (~> 1.1, != 1.3.0)
- sprockets-helpers (1.1.0)
- sprockets (~> 2.0)
- sprockets-sass (1.1.0)
- sprockets (~> 2.0)
- tilt (~> 1.1)
- thor (0.19.1)
- thread_safe (0.3.3)
- tilt (1.4.1)
- tzinfo (0.3.39)
- uber (0.0.4)
- uglifier (2.5.0)
- execjs (>= 0.3.0)
- json (>= 1.8.0)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- middleman (~> 3.3.2)
- middleman-livereload (~> 3.1.0)
- tzinfo-data
- wdm (~> 0.1.0)
diff --git a/Gruntfile.js b/Gruntfile.js
deleted file mode 100644
index 786fdbf..0000000
--- a/Gruntfile.js
+++ /dev/null
@@ -1,78 +0,0 @@
-module.exports = function(grunt) {
- 'use strict';
-
- grunt.initConfig({
- uglify: {
- options: {
- mangle: false
- },
- my_target: {
- files: {
- 'dist/timesheet.js': ['source/javascripts/timesheet.bubble.js', 'source/javascripts/timesheet.js']
- }
- }
- },
- sass: {
- dist: {
- options: {
- style: 'compressed'
- },
- files: {
- 'dist/timesheet.css': 'source/stylesheets/timesheet.css.sass'
- }
- }
- },
- jshint: {
- all: {
- src: [
- 'source/javascripts/*.js',
- 'source/javascripts/**/*.js.erb'
- ],
- options: {
- jshintrc: '.jshintrc'
- }
- }
- },
- simplemocha: {
- options: {
- globals: ['should'],
- timeout: 3000,
- ignoreLeaks: false,
- grep: '',
- ui: 'tdd',
- reporter: 'spec'
- },
- all: { src: ['test/**/*.js'] }
- },
- watch: {
- scripts: {
- files: [
- '.jshintrc',
- 'Gruntfile.js',
- 'source/**/*.js',
- 'source/**/*.js.erb',
- 'test/*.js',
- '.jshint'
- ],
- tasks: ['simplemocha', 'jshint'],
- options: {
- interrupt: true,
- },
- },
- }
- });
-
- // For this to work, you need to have run `npm install grunt-simple-mocha`
- grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-contrib-watch');
- grunt.loadNpmTasks('grunt-simple-mocha');
-
- grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-sass');
-
- // Default task
- grunt.registerTask('default', ['simplemocha', 'jshint']);
-
- // Build task
- grunt.registerTask('build', ['uglify', 'sass']);
-};
diff --git a/README.md b/README.md
deleted file mode 100644
index 5f61283..0000000
--- a/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Timesheet.js - Work in progress
-
-Simple JavaScript library to create HTML time sheets. Wrapped in an example project using Middleman …
-
-![](https://raw.githubusercontent.com/semu/timesheet.js/master/screen.png)
-
-```javascript
-new Timesheet('timesheet', 2002, 2013, [
- ['2002', '09/2002', 'A freaking awesome time', 'lorem'],
- ['06/2002', '09/2003', 'Some great memories', 'ipsum'],
- ['2003', 'Had very bad luck'],
- ['10/2003', '2006', 'At least had fun', 'dolor'],
- ['02/2005', '05/2006', 'Enjoyed those times as well', 'ipsum'],
- ['07/2005', '09/2005', 'Bad luck again', 'default'],
- ['10/2005', '2008', 'For a long time nothing happened', 'dolor'],
- ['01/2008', '05/2009', 'LOST Season #4', 'lorem'],
- ['01/2009', '05/2009', 'LOST Season #4', 'lorem'],
- ['02/2010', '05/2010', 'LOST Season #5', 'lorem'],
- ['09/2008', '06/2010', 'FRINGE #1 & #2', 'ipsum']
-]);
-```
diff --git a/config.rb b/config.rb
deleted file mode 100644
index 9d8de79..0000000
--- a/config.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-set :haml, { :ugly => false, :format => :html5 }
-
-set :css_dir, 'stylesheets'
-set :js_dir, 'javascripts'
-set :images_dir, 'images'
-
-activate :livereload
-
-configure :build do
- activate :minify_css
- activate :minify_javascript
- activate :asset_hash, :ignore => []
- activate :relative_assets
-end
diff --git a/dist/timesheet.css b/dist/timesheet.css
deleted file mode 100644
index 8e5d053..0000000
--- a/dist/timesheet.css
+++ /dev/null
@@ -1 +0,0 @@
-#timesheet{width:720px;height:292px;margin:0 auto}.timesheet{border-top:1px solid rgba(250,250,250,0.5);background-color:#333;position:relative}.timesheet .scale{height:100%;position:absolute;top:0;left:0;float:left}.timesheet .scale section{float:left;width:59px;text-align:center;color:rgba(250,250,250,0.8);font-family:"Signika Negative";font-size:13px;line-height:24px;font-weight:lighter;border-left:1px dashed rgba(250,250,250,0.2);height:100%}.timesheet .data{margin:28px 0 0 0;padding:0;text-align:left;list-style-type:none;color:rgba(250,250,250,0.8);font-family:"Signika Negative";font-size:13px;overflow:hidden}.timesheet .data li{margin:0 0 3px 0;line-height:22px;height:21px;display:block;cursor:pointer;clear:both;position:relative;white-space:nowrap}.timesheet .data li:hover .bubble{opacity:1}.timesheet .data li .date{color:#b5b5b5;font-size:14px}.timesheet .data li .label{font-weight:lighter;font-size:14px;padding-left:5px;line-height:21px;color:#979796;white-space:nowrap}.timesheet .data li .bubble{width:24px;height:7px;background-color:red;display:block;float:left;position:relative;top:7px;border-radius:4px;margin:0 10px 0 0;opacity:0.7}.timesheet .data li .bubble-default{background-color:#f3552e}.timesheet .data li .bubble-lorem{background-color:#88c33a}.timesheet .data li .bubble-ipsum{background-color:#436ae0}.timesheet .data li .bubble-dolor{background-color:#f4d234}.timesheet .data li .bubble-set{background-color:#707d86}
diff --git a/dist/timesheet.js b/dist/timesheet.js
deleted file mode 100644
index 52fb54a..0000000
--- a/dist/timesheet.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var Bubble=function(wMonth,min,start,end){this.min=min,this.start=start,this.end=end,this.widthMonth=wMonth};Bubble.prototype.formatMonth=function(num){return num=parseInt(num,10),num>=10?num:"0"+num},Bubble.prototype.getStartOffset=function(){return this.widthMonth/12*(12*(this.start.getFullYear()-this.min)+this.start.getMonth())},Bubble.prototype.getFullYears=function(){return(this.end&&this.end.getFullYear()||this.start.getFullYear())-this.start.getFullYear()},Bubble.prototype.getMonths=function(){var fullYears=this.getFullYears(),months=0;return this.end?this.end.hasMonth?(months+=this.end.getMonth()+1,months+=12-(this.start.hasMonth?this.start.getMonth():0),months+=12*(fullYears-1)):(months+=12-(this.start.hasMonth?this.start.getMonth():0),months+=12*(fullYears-1>0?fullYears-1:0)):months+=this.start.hasMonth?1:12,months},Bubble.prototype.getWidth=function(){return this.widthMonth/12*this.getMonths()},Bubble.prototype.getDateLabel=function(){return[(this.start.hasMonth?this.formatMonth(this.start.getMonth()+1)+"/":"")+this.start.getFullYear(),this.end?"-"+((this.end.hasMonth?this.formatMonth(this.end.getMonth()+1)+"/":"")+this.end.getFullYear()):""].join("")},window.TimesheetBubble=Bubble}(),function(){"use strict";var Timesheet=function(container,min,max,data){this.container="#"+container,this.data=[],this.year={min:min,max:max},this.parse(data||[]),"undefined"!=typeof document&&(this.drawSections(),this.insertData())};Timesheet.prototype.insertData=function(){for(var html=[],widthMonth=document.querySelector(this.container+" .scale section").offsetWidth,n=0,m=this.data.length;m>n;n++){var cur=this.data[n],bubble=new TimesheetBubble(widthMonth,this.year.min,cur.start,cur.end),line=[' ',''+bubble.getDateLabel()+" ",''+cur.label+" "].join("");html.push("
"+line+" ")}document.querySelector(this.container).innerHTML+='"},Timesheet.prototype.drawSections=function(){for(var html=[],c=this.year.min;c<=this.year.max;c++)html.push("");document.querySelector(this.container).className="timesheet",document.querySelector(this.container).innerHTML=''+html.join("")+"
"},Timesheet.prototype.parseDate=function(date){return-1===date.indexOf("/")?(date=new Date(parseInt(date,10),0,1),date.hasMonth=!1):(date=date.split("/"),date=new Date(parseInt(date[1],10),parseInt(date[0],10)-1,1),date.hasMonth=!0),date},Timesheet.prototype.parse=function(data){for(var n=0,m=data.length;m>n;n++){var beg=this.parseDate(data[n][0]),end=4===data[n].length?this.parseDate(data[n][1]):null,lbl=4===data[n].length?data[n][2]:data[n][1],cat=data[n][3]||"default";beg.getFullYear()this.year.max?this.year.max=end.getFullYear():beg.getFullYear()>this.year.max&&(this.year.max=beg.getFullYear()),this.data.push({start:beg,end:end,label:lbl,type:cat})}},window.Timesheet=Timesheet}();
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..9390017
--- /dev/null
+++ b/index.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+ Timesheet.js - Open time tables with HTML, JavaScript and CSS …
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Just include Timesheet.js and configure your data. No external dependencies, no jQuery needed and of course no Angular.JS! Just a few lines JavaScript to generate a beautiful HTML5 layout and some really delicious CSS to be customized by almighty you.
+
+
+
+ <script src="/javascripts/timesheet.js" type="text/javascript" />
+
Create a simple time sheet based on a JS array of events:
+
new Timesheet('timesheet-default', 2002, 2013, [
['2002', '09/2002', 'A freaking awesome time', 'lorem'],
['06/2002', '09/2003', 'Some great memories', 'ipsum'],
['2003', 'Had very bad luck'],
['10/2003', '2006', 'At least had fun', 'dolor'],
['02/2005', '05/2006', 'Enjoyed those times as well', 'ipsum'],
['07/2005', '09/2005', 'Bad luck again', 'default'],
['10/2005', '2008', 'For a long time nothing happened', 'dolor'],
['01/2008', '05/2009', 'LOST Season #4', 'lorem'],
['01/2009', '05/2009', 'LOST Season #4', 'lorem'],
['02/2010', '05/2010', 'LOST Season #5', 'lorem'],
['09/2008', '06/2010', 'FRINGE #1 & #2', 'ipsum']
]);
+
It's that simple to use Timesheet.js . So, have a nice day, thank you for smoking and maybe try using Timesheet.js with custom styles …
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javascripts/lib-df0795e9.js b/javascripts/lib-df0795e9.js
new file mode 100644
index 0000000..d4789e8
--- /dev/null
+++ b/javascripts/lib-df0795e9.js
@@ -0,0 +1 @@
+!function(){"use strict";var t={ready:function(e){/in/.test(document.readyState)?setTimeout(function(){t.ready(e)},9):e()}};window.Lib=t}();
\ No newline at end of file
diff --git a/javascripts/main-f324c27e.js b/javascripts/main-f324c27e.js
new file mode 100644
index 0000000..bb2ecd0
--- /dev/null
+++ b/javascripts/main-f324c27e.js
@@ -0,0 +1 @@
+!function(){"use strict";var t={ready:function(e){/in/.test(document.readyState)?setTimeout(function(){t.ready(e)},9):e()}};window.Lib=t}(),function(){"use strict";var t=function(t,e,n,a){this.data=[],this.year={min:e,max:n},this.parse(a||[]),"undefined"!=typeof document&&(this.container="string"==typeof t?document.querySelector("#"+t):t,this.drawSections(),this.insertData())};t.prototype.insertData=function(){for(var t=[],n=this.container.querySelector(".scale section").offsetWidth,a=0,s=this.data.length;s>a;a++){var i=this.data[a],r=new e(n,this.year.min,i.start,i.end),o=[' ',''+r.getDateLabel()+" ",''+i.label+" "].join("");t.push(""+o+" ")}this.container.innerHTML+='"},t.prototype.drawSections=function(){for(var t=[],e=this.year.min;e<=this.year.max;e++)t.push("");this.container.className="timesheet color-scheme-default",this.container.innerHTML=''+t.join("")+"
"},t.prototype.parseDate=function(t){return-1===t.indexOf("/")?(t=new Date(parseInt(t,10),0,1),t.hasMonth=!1):(t=t.split("/"),t=new Date(parseInt(t[1],10),parseInt(t[0],10)-1,1),t.hasMonth=!0),t},t.prototype.parse=function(t){for(var e=0,n=t.length;n>e;e++){var a=this.parseDate(t[e][0]),s=4===t[e].length?this.parseDate(t[e][1]):null,i=4===t[e].length?t[e][2]:t[e][1],r=4===t[e].length?t[e][3]:3===t[e].length?t[e][2]:"default";a.getFullYear()this.year.max?this.year.max=s.getFullYear():a.getFullYear()>this.year.max&&(this.year.max=a.getFullYear()),this.data.push({start:a,end:s,label:i,type:r})}};var e=function(t,e,n,a){this.min=e,this.start=n,this.end=a,this.widthMonth=t};e.prototype.formatMonth=function(t){return t=parseInt(t,10),t>=10?t:"0"+t},e.prototype.getStartOffset=function(){return this.widthMonth/12*(12*(this.start.getFullYear()-this.min)+this.start.getMonth())},e.prototype.getFullYears=function(){return(this.end&&this.end.getFullYear()||this.start.getFullYear())-this.start.getFullYear()},e.prototype.getMonths=function(){var t=this.getFullYears(),e=0;return this.end?this.end.hasMonth?(e+=this.end.getMonth()+1,e+=12-(this.start.hasMonth?this.start.getMonth():0),e+=12*(t-1)):(e+=12-(this.start.hasMonth?this.start.getMonth():0),e+=12*(t-1>0?t-1:0)):e+=this.start.hasMonth?1:12,e},e.prototype.getWidth=function(){return this.widthMonth/12*this.getMonths()},e.prototype.getDateLabel=function(){return[(this.start.hasMonth?this.formatMonth(this.start.getMonth()+1)+"/":"")+this.start.getFullYear(),this.end?"-"+((this.end.hasMonth?this.formatMonth(this.end.getMonth()+1)+"/":"")+this.end.getFullYear()):""].join("")},window.Timesheet=t}(),function(){"use strict";Lib.ready(function(){new Timesheet("timesheet-default",2002,2013,[["2002","09/2002","A freaking awesome time","lorem"],["06/2002","09/2003","Some great memories","ipsum"],["2003","Had very bad luck"],["10/2003","2006","At least had fun","dolor"],["02/2005","05/2006","Enjoyed those times as well","ipsum"],["07/2005","09/2005","Bad luck again","default"],["10/2005","2008","For a long time nothing happened","dolor"],["01/2008","05/2009","LOST Season #4","lorem"],["01/2009","05/2009","LOST Season #4","sit"],["02/2010","05/2010","LOST Season #5","lorem"],["09/2008","06/2010","FRINGE #1 & #2","ipsum"]]),document.querySelector("#switch-dark").addEventListener("click",function(){document.querySelector("body").className="index black"}),document.querySelector("#switch-light").addEventListener("click",function(){document.querySelector("body").className="index white"})})}();
\ No newline at end of file
diff --git a/javascripts/timesheet-d66c51c0.js b/javascripts/timesheet-d66c51c0.js
new file mode 100644
index 0000000..d6c5ac4
--- /dev/null
+++ b/javascripts/timesheet-d66c51c0.js
@@ -0,0 +1 @@
+!function(){"use strict";var t=function(t,e,s,a){this.data=[],this.year={min:e,max:s},this.parse(a||[]),"undefined"!=typeof document&&(this.container="string"==typeof t?document.querySelector("#"+t):t,this.drawSections(),this.insertData())};t.prototype.insertData=function(){for(var t=[],s=this.container.querySelector(".scale section").offsetWidth,a=0,n=this.data.length;n>a;a++){var i=this.data[a],r=new e(s,this.year.min,i.start,i.end),h=[' ',''+r.getDateLabel()+" ",''+i.label+" "].join("");t.push(""+h+" ")}this.container.innerHTML+='"},t.prototype.drawSections=function(){for(var t=[],e=this.year.min;e<=this.year.max;e++)t.push("");this.container.className="timesheet color-scheme-default",this.container.innerHTML=''+t.join("")+"
"},t.prototype.parseDate=function(t){return-1===t.indexOf("/")?(t=new Date(parseInt(t,10),0,1),t.hasMonth=!1):(t=t.split("/"),t=new Date(parseInt(t[1],10),parseInt(t[0],10)-1,1),t.hasMonth=!0),t},t.prototype.parse=function(t){for(var e=0,s=t.length;s>e;e++){var a=this.parseDate(t[e][0]),n=4===t[e].length?this.parseDate(t[e][1]):null,i=4===t[e].length?t[e][2]:t[e][1],r=4===t[e].length?t[e][3]:3===t[e].length?t[e][2]:"default";a.getFullYear()this.year.max?this.year.max=n.getFullYear():a.getFullYear()>this.year.max&&(this.year.max=a.getFullYear()),this.data.push({start:a,end:n,label:i,type:r})}};var e=function(t,e,s,a){this.min=e,this.start=s,this.end=a,this.widthMonth=t};e.prototype.formatMonth=function(t){return t=parseInt(t,10),t>=10?t:"0"+t},e.prototype.getStartOffset=function(){return this.widthMonth/12*(12*(this.start.getFullYear()-this.min)+this.start.getMonth())},e.prototype.getFullYears=function(){return(this.end&&this.end.getFullYear()||this.start.getFullYear())-this.start.getFullYear()},e.prototype.getMonths=function(){var t=this.getFullYears(),e=0;return this.end?this.end.hasMonth?(e+=this.end.getMonth()+1,e+=12-(this.start.hasMonth?this.start.getMonth():0),e+=12*(t-1)):(e+=12-(this.start.hasMonth?this.start.getMonth():0),e+=12*(t-1>0?t-1:0)):e+=this.start.hasMonth?1:12,e},e.prototype.getWidth=function(){return this.widthMonth/12*this.getMonths()},e.prototype.getDateLabel=function(){return[(this.start.hasMonth?this.formatMonth(this.start.getMonth()+1)+"/":"")+this.start.getFullYear(),this.end?"-"+((this.end.hasMonth?this.formatMonth(this.end.getMonth()+1)+"/":"")+this.end.getFullYear()):""].join("")},window.Timesheet=t}();
\ No newline at end of file
diff --git a/package.json b/package.json
deleted file mode 100644
index abc24b6..0000000
--- a/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "timesheet.js",
- "version": "0.0.1",
- "description": "Middleman, Grunt, JSHint, SASS, HAML",
- "author": "semu",
- "devDependencies": {
- "grunt": "~0.4.1",
- "grunt-cli": "~0.1.11",
- "grunt-jslint": "~1.1.1",
- "grunt-contrib-jshint": "~0.7.2",
- "grunt-contrib-watch": "^0.6.1",
- "grunt-simple-mocha": "^0.4.0",
- "grunt-contrib-uglify": "^0.4.0",
- "grunt-contrib-sass": "^0.7.3"
- }
-}
diff --git a/screen.png b/screen.png
deleted file mode 100644
index fece20d..0000000
Binary files a/screen.png and /dev/null differ
diff --git a/source/index.haml b/source/index.haml
deleted file mode 100644
index 1bab956..0000000
--- a/source/index.haml
+++ /dev/null
@@ -1,37 +0,0 @@
-#box
- #box-inner
- %h1
- Timesheet.js
- %p Visualize your data and events with sexy HTML5 and CSS3 . Create simple time sheets with sneaky JavaScript. Style them with CSS and have mobile fun as well …
-
- #timesheet
-
- %p Just include Timesheet.js and configure your data. No external dependencies, no jQuery needed and of course no Angular.JS! Just a few lines JavaScript to generate a beautiful HTML5 layout and some really delicious CSS to be customized by mighty you.
-
- %code
- %pre
- = preserve do
- :escaped
-
-
- %p Create a simple time sheet based on a JS array of events:
-
- %code
- %pre
- = preserve do
- :escaped
- new Timesheet('timesheet', 2002, 2013, [
- ['2002', '09/2002', 'A freaking awesome time', 'lorem'],
- ['06/2002', '09/2003', 'Some great memories', 'ipsum'],
- ['2003', 'Had very bad luck'],
- ['10/2003', '2006', 'At least had fun', 'dolor'],
- ['02/2005', '05/2006', 'Enjoyed those times as well', 'ipsum'],
- ['07/2005', '09/2005', 'Bad luck again', 'default'],
- ['10/2005', '2008', 'For a long time nothing happened', 'dolor'],
- ['01/2008', '05/2009', 'LOST Season #4', 'lorem'],
- ['01/2009', '05/2009', 'LOST Season #4', 'lorem'],
- ['02/2010', '05/2010', 'LOST Season #5', 'lorem'],
- ['09/2008', '06/2010', 'FRINGE #1 & #2', 'ipsum']
- ]);
-
- %p It's that simple to use Timesheet.js . So, have a nice day and thank you for smoking …
diff --git a/source/javascripts/lib.js b/source/javascripts/lib.js
deleted file mode 100644
index 6bde961..0000000
--- a/source/javascripts/lib.js
+++ /dev/null
@@ -1,11 +0,0 @@
-(function() {
- 'use strict';
-
- var Lib = {
- /* http://www.dustindiaz.com/smallest-domready-ever */
- /* jshint -W030 */
- ready: function r(f){ /in/.test(document.readyState)?setTimeout('Lib.ready('+f+')',9):f(); }
- };
-
- window.Lib = Lib;
-})();
diff --git a/source/javascripts/main.js b/source/javascripts/main.js
deleted file mode 100644
index 31e5a1c..0000000
--- a/source/javascripts/main.js
+++ /dev/null
@@ -1,24 +0,0 @@
-//= require_tree .
-
-/* global Lib, Timesheet */
-
-(function(){
- 'use strict';
-
- Lib.ready(function() {
- /* jshint -W031 */
- new Timesheet('timesheet', 2002, 2013, [
- ['2002', '09/2002', 'A freaking awesome time', 'lorem'],
- ['06/2002', '09/2003', 'Some great memories', 'ipsum'],
- ['2003', 'Had very bad luck'],
- ['10/2003', '2006', 'At least had fun', 'dolor'],
- ['02/2005', '05/2006', 'Enjoyed those times as well', 'ipsum'],
- ['07/2005', '09/2005', 'Bad luck again', 'default'],
- ['10/2005', '2008', 'For a long time nothing happened', 'dolor'],
- ['01/2008', '05/2009', 'LOST Season #4', 'lorem'],
- ['01/2009', '05/2009', 'LOST Season #4', 'lorem'],
- ['02/2010', '05/2010', 'LOST Season #5', 'lorem'],
- ['09/2008', '06/2010', 'FRINGE #1 & #2', 'ipsum']
- ]);
- });
-})();
diff --git a/source/javascripts/timesheet.bubble.js b/source/javascripts/timesheet.bubble.js
deleted file mode 100644
index 98d3af8..0000000
--- a/source/javascripts/timesheet.bubble.js
+++ /dev/null
@@ -1,78 +0,0 @@
-(function() {
- 'use strict';
-
- /**
- * Timesheet Bubble
- */
- var Bubble = function(wMonth, min, start, end) {
- this.min = min;
- this.start = start;
- this.end = end;
- this.widthMonth = wMonth;
- };
-
- /**
- * Format month number
- */
- Bubble.prototype.formatMonth = function(num) {
- num = parseInt(num, 10);
-
- return num >= 10 ? num : '0' + num;
- };
-
- /**
- * Calculate starting offset for bubble
- */
- Bubble.prototype.getStartOffset = function() {
- return (this.widthMonth/12) * (12 * (this.start.getFullYear() - this.min) + this.start.getMonth());
- };
-
- /**
- * Get count of full years from start to end
- */
- Bubble.prototype.getFullYears = function() {
- return ((this.end && this.end.getFullYear()) || this.start.getFullYear()) - this.start.getFullYear();
- };
-
- /**
- * Get count of all months in Timesheet Bubble
- */
- Bubble.prototype.getMonths = function() {
- var fullYears = this.getFullYears();
- var months = 0;
-
- if (!this.end) {
- months += !this.start.hasMonth ? 12 : 1;
- } else {
- if (!this.end.hasMonth) {
- months += 12 - (this.start.hasMonth ? this.start.getMonth() : 0);
- months += 12 * (fullYears-1 > 0 ? fullYears-1 : 0);
- } else {
- months += this.end.getMonth() + 1;
- months += 12 - (this.start.hasMonth ? this.start.getMonth() : 0);
- months += 12 * (fullYears-1);
- }
- }
-
- return months;
- };
-
- /**
- * Get bubble's width in pixel
- */
- Bubble.prototype.getWidth = function() {
- return (this.widthMonth/12) * this.getMonths();
- };
-
- /**
- * Get the bubble's label
- */
- Bubble.prototype.getDateLabel = function() {
- return [
- (this.start.hasMonth ? this.formatMonth(this.start.getMonth() + 1) + '/' : '' ) + this.start.getFullYear(),
- (this.end ? '-' + ((this.end.hasMonth ? this.formatMonth(this.end.getMonth() + 1) + '/' : '' ) + this.end.getFullYear()) : '')
- ].join('');
- };
-
- window.TimesheetBubble = Bubble;
-})();
diff --git a/source/javascripts/timesheet.js b/source/javascripts/timesheet.js
deleted file mode 100644
index 17c2162..0000000
--- a/source/javascripts/timesheet.js
+++ /dev/null
@@ -1,105 +0,0 @@
-// require 'timesheet.bubble'
-
-/* global TimesheetBubble */
-
-(function() {
- 'use strict';
-
- /**
- * Initialize a Timesheet
- */
- var Timesheet = function(container, min, max, data) {
- this.container = '#' + container;
- this.data = [];
- this.year = {
- min: min,
- max: max
- };
-
- this.parse(data || []);
-
- if (typeof document !== 'undefined') {
- this.drawSections();
- this.insertData();
- }
- };
-
- /**
- * Insert data into Timesheet
- */
- Timesheet.prototype.insertData = function() {
- var html = [];
- var widthMonth = document.querySelector(this.container + ' .scale section').offsetWidth;
-
- for (var n = 0, m = this.data.length; n < m; n++) {
- var cur = this.data[n];
- var bubble = new TimesheetBubble(widthMonth, this.year.min, cur.start, cur.end);
-
- var line = [
- ' ',
- '' + bubble.getDateLabel() + ' ',
- '' + cur.label + ' '
- ].join('');
-
- html.push('' + line + ' ');
- }
-
- document.querySelector(this.container).innerHTML += '';
- };
-
- /**
- * Draw section labels
- */
- Timesheet.prototype.drawSections = function() {
- var html = [];
-
- for (var c = this.year.min; c <= this.year.max; c++) {
- html.push('');
- }
-
- document.querySelector(this.container).className = 'timesheet';
- document.querySelector(this.container).innerHTML = '' + html.join('') + '
';
- };
-
- /**
- * Parse data string
- */
- Timesheet.prototype.parseDate = function(date) {
- if (date.indexOf('/') === -1) {
- date = new Date(parseInt(date, 10), 0, 1);
- date.hasMonth = false;
- } else {
- date = date.split('/');
- date = new Date(parseInt(date[1], 10), parseInt(date[0], 10)-1, 1);
- date.hasMonth = true;
- }
-
- return date;
- };
-
- /**
- * Parse passed data
- */
- Timesheet.prototype.parse = function(data) {
- for (var n = 0, m = data.length; n this.year.max) {
- this.year.max = end.getFullYear();
- } else if (beg.getFullYear() > this.year.max) {
- this.year.max = beg.getFullYear();
- }
-
- this.data.push({start: beg, end: end, label: lbl, type: cat});
- }
- };
-
- window.Timesheet = Timesheet;
-})();
diff --git a/source/layouts/layout.haml b/source/layouts/layout.haml
deleted file mode 100644
index 2a48791..0000000
--- a/source/layouts/layout.haml
+++ /dev/null
@@ -1,17 +0,0 @@
-!!! 5
-%html
- %head
- %meta{:charset => 'utf-8'}
- %meta{:content => 'IE=edge,chrome=1', 'http-equiv' => 'X-UA-Compatible'}
- %title Timesheet.js
-
- = javascript_include_tag 'timesheet.js', 'main.js'
- = stylesheet_link_tag 'http://fonts.googleapis.com/css?family=Oxygen+Mono:400,600,800'
- = stylesheet_link_tag 'http://fonts.googleapis.com/css?family=Open+Sans:400,600,800'
- = stylesheet_link_tag 'http://fonts.googleapis.com/css?family=Signika+Negative:300,400,600,700'
- = stylesheet_link_tag 'all.css'
- = yield_content :head
- %body{ :class => page_classes }
- %span
- #container
- = yield
diff --git a/source/stylesheets/_normalize.css.sass b/source/stylesheets/_normalize.css.sass
deleted file mode 100644
index 6258408..0000000
--- a/source/stylesheets/_normalize.css.sass
+++ /dev/null
@@ -1,102 +0,0 @@
-article, aside, details, figcaption, figure, footer, header, hgroup, nav, section, summary
- display: block
-
-audio, canvas, video
- display: inline-block
-
-audio:not([controls])
- display: none
- height: 0
-
-[hidden]
- display: none
-
-html
- font-family: sans-serif
- -webkit-text-size-adjust: 100%
- -ms-text-size-adjust: 100%
-
-html, body, p, ul, li, h1, h2, h3, h4, h5, img, fieldset, input, textarea, select
- margin: 0
- padding: 0
- border: 0
-
-a
- &:focus
- outline: 0
- &:active, &:hover
- outline: 0
-
-h1
- font-size: 2em
-
-h2
- font-size: 1em
-
-strong
- font-weight: bold
-
-dfn
- font-style: italic
-
-code, kbd, pre, samp
- font-family: monospace, serif
- font-size: 1em
-
-pre
- white-space: pre
- white-space: pre-wrap
- word-wrap: break-word
-
-q
- quotes: "\201C" "\201D" "\2018" "\2019"
-
-small
- font-size: 80%
-
-sub
- font-size: 75%
- line-height: 0
- position: relative
- vertical-align: baseline
- bottom: -0.25em
-
-sup
- font-size: 75%
- line-height: 0
- position: relative
- vertical-align: baseline
- top: -0.5em
-
-img
- border: 0
-
-legend
- border: 0
- padding: 0
-
-button, input, select, textarea
- font-size: 100%
-
-textarea, input
- outline: none
-
-input
- line-height: normal
-
-ul, ul li
- list-style-type: none
- margin: 0
- padding: 0
-
-button::-moz-focus-inner, input::-moz-focus-inner
- border: 0
- padding: 0
-
-textarea
- overflow: auto
- vertical-align: top
-
-table
- border-collapse: collapse
- border-spacing: 0
diff --git a/source/stylesheets/all.css.sass b/source/stylesheets/all.css.sass
deleted file mode 100644
index cb3b26b..0000000
--- a/source/stylesheets/all.css.sass
+++ /dev/null
@@ -1,89 +0,0 @@
-@import 'normalize'
-
-html, body
- margin: 0
- padding: 0
- width: 100%
- height: 100%
- background-color: rgba(61, 61, 61, 1)
-
-footer
- margin: 50px 0 80px
- clear: both
- text-align: center
- font-family: 'Open Sans'
- font-size: 10px
- font-weight: 300
- line-height: 16px
- color: rgba(140, 140, 140, 1)
-
- a
- display: block
- text-decoration: none
- color: rgba(255, 145, 18, 1)
- font-size: 13px
-
-
-#box
- // display: table
- width: 100%
- height: 100%
-
- #box-inner
- // display: table-cell
- height: 100%
- text-align: center
- vertical-align: middle
-
-#example-data
- margin: 0 auto
- width: 680px
- height: 300px
- background-color: rgba(100, 100, 100, 1)
-
- p
- text-align: right
- font-size: 12px
- a
- color: rgba(255, 145, 18, 1)
- text-decoration: none
-
-h1
- font-family: 'Open Sans'
- font-size: 60pt
- font-weight: 800
- line-height: 240px
- color: rgba(255, 145, 18, 1)
-
- span
- font-weight: 600
- color: white
-
-p
- width: 680px
- text-align: left
- font-family: 'Open Sans'
- font-weight: 400
- color: rgba(220, 220, 220, 1)
- margin: 20px auto
- line-height: 24px
-
- span
- color: rgba(255, 145, 18, 1)
- font-weight: 600
-
-code
- pre
- margin: 0 auto
- width: 670px
- background-color: rgba(100, 100, 100, 1)
- color: rgba(190, 190, 190, 1)
- padding: 10px 8px
- font-family: 'Oxygen Mono'
- font-size: 11px
- font-weight: 600
-
-code, pre
- text-align: left
-
-@import 'timesheet'
diff --git a/source/stylesheets/timesheet.css.sass b/source/stylesheets/timesheet.css.sass
deleted file mode 100644
index fac4d58..0000000
--- a/source/stylesheets/timesheet.css.sass
+++ /dev/null
@@ -1,87 +0,0 @@
-#timesheet
- width: 720px
- height: 292px
- margin: 0 auto
-
-.timesheet
- border-top: 1px solid rgba(250, 250, 250, 0.5)
- background-color: rgba(51, 51, 51, 1)
- position: relative
-
- .scale
- height: 100%
- position: absolute
- top: 0
- left: 0
- float: left
-
- section
- float: left
- width: 59px
- text-align: center
- color: rgba(250, 250, 250, 0.8)
- font-family: 'Signika Negative'
- font-size: 13px
- line-height: 24px
- font-weight: lighter
- border-left: 1px dashed rgba(250, 250, 250, 0.2)
- height: 100%
-
- .data
- margin: 28px 0 0 0
- padding: 0
- text-align: left
- list-style-type: none
- color: rgba(250, 250, 250, 0.8)
- font-family: 'Signika Negative'
- font-size: 13px
- overflow: hidden
-
- li
- margin: 0 0 3px 0
- line-height: 22px
- height: 21px
- display: block
- cursor: pointer
- clear: both
- position: relative
- white-space: nowrap
-
- &:hover
- .bubble
- opacity: 1
-
- .date
- color: rgba(181, 181, 181, 1)
- font-size: 14px
-
- .label
- font-weight: lighter
- font-size: 14px
- padding-left: 5px
- line-height: 21px
- color: rgba(151, 151, 150, 1)
- white-space: nowrap
-
- .bubble
- width: 24px
- height: 7px
- background-color: red
- display: block
- float: left
- position: relative
- top: 7px
- border-radius: 4px
- margin: 0 10px 0 0
- opacity: 0.7
-
- .bubble-default
- background-color: rgba(243, 85, 46, 1)
- .bubble-lorem
- background-color: rgba(136, 195, 58, 1)
- .bubble-ipsum
- background-color: rgba(67, 106, 224, 1)
- .bubble-dolor
- background-color: rgba(244, 210, 52, 1)
- .bubble-set
- background-color: rgba(112, 125, 134, 1)
diff --git a/stylesheets/all-6dc65153.css b/stylesheets/all-6dc65153.css
new file mode 100644
index 0000000..cd0446c
--- /dev/null
+++ b/stylesheets/all-6dc65153.css
@@ -0,0 +1,404 @@
+article, aside, details, figcaption, figure, footer, header, hgroup, nav, section, summary {
+ display:block;
+}
+
+audio, canvas, video {
+ display:inline-block;
+}
+
+audio:not([controls]) {
+ display:none;
+ height:0;
+}
+
+[hidden] {
+ display:none;
+}
+
+html {
+ font-family:sans-serif;
+ -webkit-text-size-adjust:100%;
+ -ms-text-size-adjust:100%;
+}
+
+html, body, p, ul, li, h1, h2, h3, h4, h5, img, fieldset, input, textarea, select {
+ margin:0;
+ padding:0;
+ border:0;
+}
+
+a:focus {
+ outline:0;
+}
+
+a:active, a:hover {
+ outline:0;
+}
+
+h1 {
+ font-size:2em;
+}
+
+h2 {
+ font-size:1em;
+}
+
+strong {
+ font-weight:bold;
+}
+
+dfn {
+ font-style:italic;
+}
+
+code, kbd, pre, samp {
+ font-family:monospace, serif;
+ font-size:1em;
+}
+
+q {
+ quotes:"201C" "201D" "2018" "2019";
+}
+
+small {
+ font-size:80%;
+}
+
+sub {
+ font-size:75%;
+ line-height:0;
+ position:relative;
+ vertical-align:baseline;
+ bottom:-0.25em;
+}
+
+sup {
+ font-size:75%;
+ line-height:0;
+ position:relative;
+ vertical-align:baseline;
+ top:-0.5em;
+}
+
+img {
+ border:0;
+}
+
+legend {
+ border:0;
+ padding:0;
+}
+
+button, input, select, textarea {
+ font-size:100%;
+}
+
+textarea, input {
+ outline:none;
+}
+
+input {
+ line-height:normal;
+}
+
+ul, ul li {
+ list-style-type:none;
+ margin:0;
+ padding:0;
+}
+
+button::-moz-focus-inner, input::-moz-focus-inner {
+ border:0;
+ padding:0;
+}
+
+textarea {
+ overflow:auto;
+ vertical-align:top;
+}
+
+table {
+ border-collapse:collapse;
+ border-spacing:0;
+}
+
+html, body {
+ margin:0;
+ padding:0;
+ width:100%;
+ height:100%;
+}
+
+* {
+ transition:all 0.5s ease;
+}
+
+body.black {
+ background-color: #eeee;
+}
+
+body.white {
+ background-color: #eee;
+}
+.container {
+ width: 720px;
+ margin: 0 auto;
+ color: #777;
+}
+
+.container p {
+ margin-bottom: 20px;
+ line-height: 150%;
+}
+
+/* Header */
+.header {
+ color: #fff;
+ font-size: 16px;
+ text-align: center;
+ background: #1DAFEA;
+ margin-bottom: 40px;
+ line-height: 150%;
+ padding: 50px 0 40px 0;
+}
+.header h1 {
+ color: #fff;
+ line-height: 110%;
+ margin-bottom: 55px;
+}
+.header span { color: #F5D651; }
+.header p { color: #fff; }
+.header p span { font-weight: bold; }
+
+.timesheet {
+ margin-bottom: 20px;
+ padding: 10px;
+}
+code {
+ padding: 20px;
+ text-align: left;
+ border-radius: 8px;
+ margin-bottom: 20px;
+ background: #f7f7f7;
+ display: inline-block;
+ border: 1px solid #ccc;
+ line-height: 150%;
+ width: 700px;
+ font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
+}
+
+pre {
+ margin: 0;
+ white-space: pre-line;
+}
+
+
+#box {
+ width:100%;
+ height:100%;
+}
+
+#box-inner {
+ height:100%;
+ text-align:center;
+ vertical-align:middle;
+}
+
+h1 {
+ font-family:"Open Sans";
+ font-size:60pt;
+ font-weight:800;
+ line-height:240px;
+}
+
+
+a, a:hover, a:visited, a:active {
+ font-weight:600;
+ text-decoration:none;
+}
+
+.center {
+ text-align:center;
+}
+
+.timesheet {
+ width:720px;
+ height:292px;
+}
+
+.timesheet {
+ width: 100%;
+ position:relative;
+ background: #f7f7f7;
+ border-radius: 10px;
+ border: 1px solid #ccc;
+}
+
+.timesheet.color-scheme-default .bubble-default { background-color:RGBA(252, 70, 74, 1); }
+.timesheet.color-scheme-default .bubble-lorem { background-color:RGBA(154, 202, 39, 1); }
+.timesheet.color-scheme-default .bubble-ipsum { background-color:RGBA(60, 182, 227, 1); }
+.timesheet.color-scheme-default .bubble-dolor { background-color:RGBA(244, 207, 48, 1); }
+.timesheet.color-scheme-default .bubble-sit { background-color:RGBA(169, 105, 202, 1); }
+
+.timesheet.color-scheme-alternative .bubble-default { background-color:#f3552e; }
+.timesheet.color-scheme-alternative .bubble-lorem { background-color:#88c33a; }
+.timesheet.color-scheme-alternative .bubble-ipsum { background-color:#436ae0; }
+.timesheet.color-scheme-alternative .bubble-dolor { background-color:#f4d234; }
+.timesheet.color-scheme-alternative .bubble-sit { background-color:#707d86; }
+
+.timesheet .scale {
+ height:100%;
+ position:absolute;
+ top:0;
+ left:0;
+ float:left;
+}
+
+.timesheet .scale section {
+ float:left;
+ width:59px;
+ text-align:center;
+ color: #777;
+ font-family:"Signika Negative";
+ font-size:13px;
+ line-height:24px;
+ font-weight:lighter;
+ border-left:1px dashed #ddd;
+ height:100%;
+}
+.timesheet .scale section:first-child { border-left: 0; }
+
+.timesheet .data {
+ margin:28px 0 0 0;
+ padding:0;
+ text-align:left;
+ list-style-type:none;
+ color:rgba(250, 250, 250, 0.8);
+ font-family:"Signika Negative";
+ font-size:13px;
+ overflow:hidden;
+}
+
+.timesheet .data li {
+ margin:0 0 3px 0;
+ line-height:22px;
+ height:21px;
+ display:block;
+ clear:both;
+ position:relative;
+ white-space:nowrap;
+}
+
+.timesheet .data li:hover .bubble {
+ opacity:1;
+}
+
+.timesheet .data li .date {
+ color:#b5b5b5;
+ font-size:14px;
+}
+
+.timesheet .data li .label {
+ font-weight:lighter;
+ font-size:14px;
+ padding-left:5px;
+ line-height:21px;
+ color:#979796;
+ white-space:nowrap;
+}
+
+.timesheet .data li .bubble {
+ width:24px;
+ height:7px;
+ display:block;
+ float:left;
+ position:relative;
+ top:7px;
+ border-radius:4px;
+ margin:0 10px 0 0;
+ opacity:0.7;
+}
+
+#timesheet-alternative {
+ background-color:RGBA(247, 247, 247, 1);
+ border-radius:5px;
+}
+
+#timesheet-alternative section {
+ color:RGBA(63, 68, 72, 1);
+ border-left:1px dashed RGBA(63, 68, 72, 0.2);
+}
+
+#timesheet-alternative section:first-child {
+ border-left:1px dashed transparent;
+}
+
+#timesheet-alternative .date {
+ display:none;
+}
+
+#timesheet-alternative .bubble {
+ margin-right:7px;
+}
+
+#timesheet-alternative .label {
+ padding-left:0px;
+ color:RGBA(48, 48, 48, 1);
+}
+
+/* change theme */
+
+.changer {
+ padding: 30px 0;
+ background: #ddd;
+ margin-top: 40px;
+ text-align: center;
+}
+.changer a {
+ color: #fff;
+ margin: 0 10px;
+ min-width: 90px;
+ padding:7px 15px;
+ text-align: center;
+ border-radius: 5px;
+ background: #53BEE6;
+ display: inline-block;
+}
+.changer #switch-dark { background: #304357; }
+
+/* black theme */
+.black { background: #2c3e50; }
+.black .timesheet { background: #e7e7e7; }
+.black code { background: #e7e7e7; }
+.black .header {
+ background: #2C3E50;
+}
+.black .container p { color: #fff; }
+
+
+/* Footer */
+.footer {
+ color: #fff;
+ background: #444;
+ text-align: center;
+ padding: 40px 0 10px 0;
+}
+.footer * { font-weight: normal !important; }
+.footer a {
+ color: #F4CF30;
+ text-decoration: none;
+}
+.footer a:last-child { color: #CE4132; margin-left: 5px; }
+.footer small {
+ margin-top: 10px;
+ display: block;
+ font-size: 10px;
+}
+.footer small a {
+ color: #ffffff !important;
+ text-decoration: underline;
+}
+p {
+ padding: 0;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/stylesheets/timesheet-9e89a437.css b/stylesheets/timesheet-9e89a437.css
new file mode 100644
index 0000000..628a53d
--- /dev/null
+++ b/stylesheets/timesheet-9e89a437.css
@@ -0,0 +1 @@
+.timesheet{width:720px;height:292px;margin:0 auto}.timesheet{border-top:1px solid rgba(250,250,250,0.5);background-color:#333333;position:relative}.timesheet.color-scheme-default .bubble-default{background-color:RGBA(252, 70, 74, 1)}.timesheet.color-scheme-default .bubble-lorem{background-color:RGBA(154, 202, 39, 1)}.timesheet.color-scheme-default .bubble-ipsum{background-color:RGBA(60, 182, 227, 1)}.timesheet.color-scheme-default .bubble-dolor{background-color:RGBA(244, 207, 48, 1)}.timesheet.color-scheme-default .bubble-sit{background-color:RGBA(169, 105, 202, 1)}.timesheet.color-scheme-alternative .bubble-default{background-color:#f3552e}.timesheet.color-scheme-alternative .bubble-lorem{background-color:#88c33a}.timesheet.color-scheme-alternative .bubble-ipsum{background-color:#436ae0}.timesheet.color-scheme-alternative .bubble-dolor{background-color:#f4d234}.timesheet.color-scheme-alternative .bubble-sit{background-color:#707d86}.timesheet .scale{height:100%;position:absolute;top:0;left:0;float:left}.timesheet .scale section{float:left;width:59px;text-align:center;color:rgba(250,250,250,0.8);font-family:"Signika Negative";font-size:13px;line-height:24px;font-weight:lighter;border-left:1px dashed rgba(250,250,250,0.2);height:100%}.timesheet .data{margin:28px 0 0 0;padding:0;text-align:left;list-style-type:none;color:rgba(250,250,250,0.8);font-family:"Signika Negative";font-size:13px;overflow:hidden}.timesheet .data li{margin:0 0 3px 0;line-height:22px;height:21px;display:block;clear:both;position:relative;white-space:nowrap}.timesheet .data li:hover .bubble{opacity:1}.timesheet .data li .date{color:#b5b5b5;font-size:14px}.timesheet .data li .label{font-weight:lighter;font-size:14px;padding-left:5px;line-height:21px;color:#979796;white-space:nowrap}.timesheet .data li .bubble{width:24px;height:7px;display:block;float:left;position:relative;top:7px;border-radius:4px;margin:0 10px 0 0;opacity:0.7}#timesheet-alternative{background-color:RGBA(247, 247, 247, 1);border-radius:5px}#timesheet-alternative section{color:RGBA(63, 68, 72, 1);border-left:1px dashed RGBA(63, 68, 72, 0.2)}#timesheet-alternative section:first-child{border-left:1px dashed transparent}#timesheet-alternative .date{display:none}#timesheet-alternative .bubble{margin-right:7px}#timesheet-alternative .label{padding-left:0px;color:RGBA(48, 48, 48, 1)}
\ No newline at end of file
diff --git a/stylesheets/timesheet-white-fe31f59b.css b/stylesheets/timesheet-white-fe31f59b.css
new file mode 100644
index 0000000..f22b44e
--- /dev/null
+++ b/stylesheets/timesheet-white-fe31f59b.css
@@ -0,0 +1 @@
+.timesheet{width:720px;height:292px;margin:0 auto}.timesheet{border-top:1px solid rgba(60,60,60,0.3);background-color:#fbfbfb;position:relative}.timesheet.color-scheme-default .bubble-default{background-color:RGBA(252, 70, 74, 1)}.timesheet.color-scheme-default .bubble-lorem{background-color:RGBA(154, 202, 39, 1)}.timesheet.color-scheme-default .bubble-ipsum{background-color:RGBA(60, 182, 227, 1)}.timesheet.color-scheme-default .bubble-dolor{background-color:RGBA(244, 207, 48, 1)}.timesheet.color-scheme-default .bubble-sit{background-color:RGBA(169, 105, 202, 1)}.timesheet.color-scheme-alternative .bubble-default{background-color:#f3552e}.timesheet.color-scheme-alternative .bubble-lorem{background-color:#88c33a}.timesheet.color-scheme-alternative .bubble-ipsum{background-color:#436ae0}.timesheet.color-scheme-alternative .bubble-dolor{background-color:#f4d234}.timesheet.color-scheme-alternative .bubble-sit{background-color:#707d86}.timesheet .scale{height:100%;position:absolute;top:0;left:0;float:left}.timesheet .scale section{float:left;width:59px;color:rgba(50,50,50,0.8);font-family:"Signika Negative";font-size:13px;line-height:24px;font-weight:300;border-left:1px dashed rgba(50,50,50,0.1);height:100%}.timesheet .data{margin:28px 0 0 0;padding:0;text-align:left;list-style-type:none;color:rgba(250,250,250,0.8);font-family:"Signika Negative";font-size:13px;overflow:hidden}.timesheet .data li{margin:0 0 3px 0;line-height:22px;height:21px;display:block;cursor:pointer;clear:both;position:relative;white-space:nowrap}.timesheet .data li:hover .bubble{opacity:1}.timesheet .data li .date{color:#797979;font-size:14px}.timesheet .data li .label{font-weight:lighter;font-size:14px;padding-left:5px;line-height:21px;color:#333332;white-space:nowrap}.timesheet .data li .bubble{width:24px;height:7px;display:block;float:left;position:relative;top:7px;border-radius:4px;margin:0 10px 0 0;opacity:0.7}
\ No newline at end of file
diff --git a/test/timesheet.js b/test/timesheet.js
deleted file mode 100644
index 5d84105..0000000
--- a/test/timesheet.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Load Timesheet lib and fake a window object …
- */
-window = {};
-require(__dirname + '/../source/javascripts/timesheet.js');
-require(__dirname + '/../source/javascripts/timesheet.bubble.js');
-
-var assert = require('assert');
-suite('Timesheet', function() {
- test('Calculation', function(done) {
- var TS = new window.Timesheet();
-
- assert.equal(12, (new window.TimesheetBubble(60, 2012, TS.parseDate('2002'), TS.parseDate('2002'))).getMonths());
- assert.equal(12, (new window.TimesheetBubble(60, 2012, TS.parseDate('2002'), TS.parseDate('2003'))).getMonths());
- assert.equal(24, (new window.TimesheetBubble(60, 2012, TS.parseDate('2002'), TS.parseDate('2004'))).getMonths());
-
- assert.equal(9, (new window.TimesheetBubble(60, 2012, TS.parseDate('04/2002'), TS.parseDate('2002'))).getMonths());
- assert.equal(9, (new window.TimesheetBubble(60, 2012, TS.parseDate('04/2002'), TS.parseDate('2003'))).getMonths());
- assert.equal(21, (new window.TimesheetBubble(60, 2012, TS.parseDate('04/2002'), TS.parseDate('2004'))).getMonths());
-
- assert.equal(13, (new window.TimesheetBubble(60, 2012, TS.parseDate('04/2002'), TS.parseDate('04/2003'))).getMonths());
-
- assert.equal(25, (new window.TimesheetBubble(60, 2012, TS.parseDate('04/2002'), TS.parseDate('04/2004'))).getMonths());
-
- assert.equal(1, (new window.TimesheetBubble(60, 2012, TS.parseDate('04/2002'))).getMonths());
- assert.equal(12, (new window.TimesheetBubble(60, 2012, TS.parseDate('2002'))).getMonths());
-
- done();
- });
-});