/*global define */
define(['lib/stapes'], function (Stapes) {
    'use strict';
    return Stapes.subclass(/** @lends LocalStorage.prototype */{

        /**
         * @class LocalStorage
         * @classdesc LocalStorage handler using HTML5 localStorage
         * @constructs
         *
         * @fires got
         * @fires error
         * @fires set
         */
        constructor: function () {
        },

        /**
         * Gets stored data
         */
        get: function () {
            var data;

            if (!window.localStorage) {
                this.emit('error', 'Local Storage not supported');
                return;
            }

            if (localStorage.data) {
                data = JSON.parse(localStorage.data);
                this.emit('got', data);
            }
        },

        /**
         * Stores settings
         * @param {object} data - Data object to store
         */
        set: function (data) {
            if (!window.localStorage) {
                this.emit('error', 'Local Storage not supported');
                return;
            }

            localStorage.data = JSON.stringify(data);
            this.emit('set');
        }
    });
});