Squashed commit theBigRafactoring:

commit 658052faaa652fa6d072aa5373abc2449722646c
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Thu Jul 31 00:32:42 2014 +0200

    * add jQuery as argument to core tests

commit c0a1b5b6f1822ab4c5f3837eeebc9e5a88965894
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Thu Jul 31 00:32:16 2014 +0200

    * add Audica.initPlugins test

commit 7fd2d81857f6b10200637f8b3adc288167e090fa
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 21:43:21 2014 +0200

    * extend core tests

commit 6d8e074d0617dcd5c12f60b016f8798b40d5bf3e
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 21:43:08 2014 +0200

    * code formatting

commit 8b70b063431c4b5eee1e56e4134fd0940ea8c6bf
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 21:20:44 2014 +0200

    * correct used coveralls module

commit 225af584f6f81bceaba928d281ae12300da89e6f
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 21:05:41 2014 +0200

    * enable coverage reporter in travis karma config file

commit 89761e67cfe6a0c339ec2b83b487c72493933a1f
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 21:02:45 2014 +0200

    * remove obsolete test sandbox html file

commit 5eacf683b24e752424d0f31a0a13f06829849586
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 21:01:52 2014 +0200

    * formatting
    * add grunt-coveralls module

commit 70febcc9011ee311e60f6898abed33aca7a1674e
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 21:01:26 2014 +0200

    * add coveralls grunt task

commit 03d9b70a3196f9d4e247c7e6ae8a39a87b2d6635
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 21:01:13 2014 +0200

    * remove obsolete grunt task

commit 98808fb23dd1881f168a47b3cd19d8a465b9403d
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 20:57:07 2014 +0200

    * add Audica.previousSong tests

commit ef76ea28621ef40165d5052855b7882c8bdaf86a
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 20:56:48 2014 +0200

    * move some test clean up methods to global afterEach

commit acc17aa8123e72594b86a38590c765267c1ee7fa
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 20:56:16 2014 +0200

    * use fail fast for Audica.previousSong

commit eca025ddbd3f758d5b76d78e8f548507215a47f0
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 20:08:45 2014 +0200

    * use quoted node version in travis yaml

commit c4993d5375511af66a2edc9685b33f88c8c07a65
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 19:53:14 2014 +0200

    * remove before_install flag from travis yaml
    * remove script flag from travis yaml

commit 72eea3d759f4e5d3254ba3b3a9ccc4c9e737b33b
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 19:50:49 2014 +0200

    * add additional fields to package json

commit 507df60863166c00e32d3dba49dc9374f14a8a18
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 19:49:37 2014 +0200

    * code formatting

commit 0d3b15cb048f68157e57cf13f42a832da404eb02
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 19:39:44 2014 +0200

    * add Audica.nextSong test

commit e3c69c079349b1adb3d98e03ffebbbe50192dbbf
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 19:39:29 2014 +0200

    * use fail fast syntax for Audica.nextSong

commit 47b345ef0a67dfb4abf6004f4a6bc83a48db3a3b
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:12:34 2014 +0200

    * update travis yaml file to use new grunt task for CI

commit fdfded590bf657d64775d50d5c004b6e1e586adf
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:11:08 2014 +0200

    * update node modules

commit bc9bb36ffd7a14734321052315e09af7eb57eb3e
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:10:57 2014 +0200

    * remove console.log statement

commit 11cda9c0fc4ee182d360e8601c49a21771d1acd9
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:10:45 2014 +0200

    * use new keyword for the database (new TAFFY()) constructor

commit cbc542f18fb2da506c44c6a5f43ed7ef721251b0
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:10:06 2014 +0200

    * refactor core
    * remove own Error construct, instead use new Error for better stack trace
    * handle ‘song’ can be undefined in playSong
    * do fail fast if an error occurs in playSong
    * code formatting

commit 70342467f536efbb4db2a401094a86032a3b5a11
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:06:31 2014 +0200

    * setup new test environment
    * use karma, mocha, chai, sinon
    * add needed modules to package json
    * add karma configuration files for local dev tests and ci tests
    * add first core test

commit c98000fbd1712d8e8d74757dbf0ba26b92d9732f
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:04:39 2014 +0200

    * formatting

commit c9164e97d2c355f111ea85f2c7ba3c4a297435b7
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:04:22 2014 +0200

    * remove obsolete node modules from package json

commit 531fe1f56b509dee5faafa30e2f10c01d8429580
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:00:30 2014 +0200

    * removed obsolete grunt tasks

commit 1204e66b536de4d50195ae7993a6a77cd2bb8d1d
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 17:00:01 2014 +0200

    * remove old test environment

commit 2c7234061fda3199ca74a1895c89ba869206a178
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 16:59:37 2014 +0200

    * add coverage folder to gitignore

commit edb426f323708a1007c5b76a0e43a9dfa9a1cbdc
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Wed Jul 30 12:26:58 2014 +0200

    * minor refactor circle event

commit 1287a9463c46c2cf1d89f0e717206c5c951595e9
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 23:44:07 2014 +0200

    * rework circle navigation
    * compute velocity and direction (cw/ccw)

commit 11f92c54e1f5190ed6fc0a137e02f939c4745efa
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 22:11:27 2014 +0200

    * add missing key listener to playlist (handle key up/down/left/right/tab)

commit 6514f2eb0dc6354fd3f3ccb98456bfca4ab44f20
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 22:09:59 2014 +0200

    * switch song selection in view from direct call
      to event based handling

commit 678637d694f6ced76da9cea5aa1c8c833bf6a86f
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 22:09:07 2014 +0200

    * refactor confusing array string join

commit 4a278f189780b87e406fed7e17f8a8dc3e459254
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 22:08:32 2014 +0200

    * rename play(L)istBox to play(l)istBox

commit babdbafb532ba056aec56fce2ba3ebbb0ec27a40
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 22:07:16 2014 +0200

    * delete empty lines

commit 7b705b3697f12a11191075e4c849e0f3119e26ac
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 22:07:01 2014 +0200

    * switch back to jQuery html encoding/decoding

commit ab695df3391a1f13002ed10f6214c938dd0fef89
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 18:20:46 2014 +0200

    * re enable accidentally disabled subsonic plugin

commit 19cf5192daffd1c17ac29cb9fec70933a34c11a8
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 18:20:04 2014 +0200

    * move view background tasks to view

commit a982236ee9f5f5290e8ac6ea672f6080bda21f6c
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 18:19:47 2014 +0200

    * player now triggers own events on
      play/pause/end/error with a prefix of ‘player’ e.g.:
      player:play

commit a9b49c7bc2d30734722ad81c8a8fced555498bb3
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 17:47:45 2014 +0200

    * avoid self as alias for ‘this’

commit 162a63f2f91186eba1842c497991dff88cf2ab83
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 17:47:22 2014 +0200

    * use native Array.forEach instead of for loop
      to trigger each event

commit 1474a61415b37d0dbc5627cb1d5d6e8e8c07dd83
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 17:46:42 2014 +0200

    * minor refactoring

commit 344c0141a85f101d6f24dcddfd1186565a62f4ee
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 17:46:27 2014 +0200

    * exclude subsonic plugin from main html

commit 2829dbef942c1f62c3a43b3c87c606c9a7ae049e
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 17:46:00 2014 +0200

    * code formatting

commit 065e4d341ad6f96d282b28773f9d9eab1fe4e698
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 17:45:48 2014 +0200

    * use ‘this’ instead of window.Audica

commit 8b5e39ff6909223f5c2b52efdbe867134fdd462e
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 16:13:16 2014 +0200

    * fix update main view

commit e23ed7b845292f06b24f1f9504e6ead5ae0532b7
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 15:48:13 2014 +0200

    * fix query selector for first/nth list element

commit 768072c71307f79c445ede879fabf16088d8543b
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 15:47:39 2014 +0200

    * remove obsolete update main view call because it
      is now handled by event

commit 3e90c8bcc8f4ad9c36d797c18b2335f33ada5c80
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 14:32:55 2014 +0200

    Squashed commit of the following:

    commit ae9795948d1d9af8e42ce6475fbc6b91a83e0294
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 14:32:13 2014 +0200

        * write db content ordered to file system
        * add db lock to avoid circular event handling
          on update db

    commit 4bcd657c15808139c653b6120eacc44d8a9e9959
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 14:31:19 2014 +0200

        * add playSong event handling to view
        * update main view on playSong event

    commit fa10416a3cb99704dd3abe37e9fcbe74fbca5d08
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 14:30:15 2014 +0200

        * fix subsonic plugin by referencing to correct method

    commit 6a49e5309c88e81f5336e09e76dc2886de7c826f
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 14:29:46 2014 +0200

        * add optional successCallback handling to writeFile

    commit 116fddf773e9e874a33c441423aa23c29d505f4a
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 14:29:13 2014 +0200

        * remove unnecessary event trigger

    commit 5df5f9c408b3a5ac31ebab657b1745b906cfe4a0
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 12:30:43 2014 +0200

        * make jshint happy

    commit fb7086c7123b9fe7e1ce5d09e93e5b27df9d1d92
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 12:28:19 2014 +0200

        * add jQuery as argument

    commit d4317d10b1d0ef4cad5fc164c382611051b270b9
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 12:27:59 2014 +0200

        * remove order from sons db query because we sort
          the db on save

    commit 59649cbf44b61cddcc2da82ee86da7ac31843a73
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 12:27:25 2014 +0200

        * sort db on save

    commit 90f80d5d1726f6aa1f38081aec803142a63f2fa1
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 12:27:07 2014 +0200

        * trigger fillSongBoxEvent instead of query db and
          call fillSongBox manually

    commit 3635df2b7ca2880a80ba2d6d08619fa6311c3f78
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 12:26:24 2014 +0200

        * adjust jshintrc

    commit 8dbce47b65bb049f5b028f42746913192887ddba
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 12:26:05 2014 +0200

        * set indent of 4 spaces to js beautifyrc

    commit 75e7e392e3a83af39e133bc90a82621d28bce6e0
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 11:28:09 2014 +0200

        * remove limit of database query

    commit 4e81c4f2fa8c5c77094e906ee95ea27709c50acf
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 11:27:45 2014 +0200

        * refactor fillSongBox
        * use native Array.forEach instead of ‘for loop’
        * call encodeHtml only once for each entry

    commit 3455b5092db43fdff4fa42f19c6d06c0de9e3f26
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 11:26:23 2014 +0200

        * refactor setSongAsFirstPlaylistElement
        * use Array.join instead of string concatenation

    commit 43c0e22eb1963c8317fc89569ea207c13931776c
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 11:24:26 2014 +0200

        * code formatting

    commit e3e172fd525fc50516d5987278c52b8dd98a988c
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 11:18:43 2014 +0200

        * adjust jshint to use 4 space indent

    commit 6e1d965f11ab2bc0a74386b35e0a3b00be349266
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 11:18:23 2014 +0200

        * update jquery to v2.1.1

    commit 369ed1b3c21f9a665fb1f510e779d257d491cfd5
    Merge: ca68f56 d28fb3f
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Tue Jul 29 09:10:21 2014 +0200

        Merge branch 'refactor/theBigRefactoring' into refactor/view

        Conflicts:
        	app/js/components/lib_core.js
        	app/js/components/lib_view.js

    commit ca68f566593ff957938d00573ad1cd17b122380e
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Mon Jul 28 23:13:48 2014 +0200

        * remove obsolete arguments

    commit 02ad9b70840374e4f3fb6c5bcdb820bb85a50b45
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Mon Jul 28 23:07:34 2014 +0200

        * split view and core

commit d28fb3f1c7e69aec1884910f76bd23b174a6e113
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Tue Jul 29 00:45:24 2014 +0200

    * use native webkit css for reflect instead of js lib

commit e3198f940279daa397ce5b68d9ca1bb1dfbae230
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Mon Jul 28 23:53:31 2014 +0200

    * use prototype instead of this to add core member

commit 03b7ba40de2282df9f4f547e8a987521aa6c23f2
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Mon Jul 28 23:53:06 2014 +0200

    * collect jshint globals in one line

commit 17eb26870e0b2ea131e480292e503ea3e22a8f7c
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Mon Jul 28 23:52:19 2014 +0200

    * use own Error objects and comment out global
      error handling to get a better stack on error

commit a396d58d7eee672e70e2863ca1e5688d6ae92e4f
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Mon Jul 28 23:16:15 2014 +0200

    * fix lastfm plugin

commit b2049f3b803a3abea46ad7673c1e4c529f8967e0
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Mon Jul 28 23:14:36 2014 +0200

    Squashed commit separating view from core!

    commit ca68f566593ff957938d00573ad1cd17b122380e
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Mon Jul 28 23:13:48 2014 +0200

        * remove obsolete arguments

    commit 02ad9b70840374e4f3fb6c5bcdb820bb85a50b45
    Author: Jörg Weber <weber.joerg.h@gmail.com>
    Date:   Mon Jul 28 23:07:34 2014 +0200

        * split view and core

commit d3fe8f30adae02c84a9da589f2220c93d259a980
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Mon Jul 28 22:12:22 2014 +0200

    Speed up song list rendering a bit

    Avoid adding the complete song properties as string to song list element.
    Instead just add the db intern id to have quick access to song properties
    by query db with id when needed.

    * remove songlist limit
    * replace whole song properties with song db intern id
    * use Array.join instead of string concatenation

commit 1b14a17616bd844214191f9ab8043b85335dfb88
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Mon Jul 28 20:36:55 2014 +0200

    Squashed commit of some code refactoring

commit 3241325ed964c918f133057463cdfdbb3903f61b
Author: Jörg Weber <weber.joerg.h@gmail.com>
Date:   Mon Jul 28 20:22:20 2014 +0200

    Squash commit of the core module refactoring

    * restructure folder and files to fit it needs
    * out source some of the methods to its or own modules
    * smaller refactorings