/*******************************************************************************

    µMatrix - a Chromium browser extension to black/white list requests.
    Copyright (C) 2014  Raymond Hill

    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 {http://www.gnu.org/licenses/}.

    Home: https://github.com/gorhill/uMatrix
*/

/* global vAPI, uDom */
/* jshint multistr: true */

/******************************************************************************/

(function() {

'use strict';

/******************************************************************************/

var messager = vAPI.messaging.channel('settings.js');

var cachedUserSettings = {};

/******************************************************************************/

function changeUserSettings(name, value) {
    messager.send({
        what: 'userSettings',
        name: name,
        value: value
    });
}

/******************************************************************************/

function prepareToDie() {
}

/******************************************************************************/

var installEventHandlers = function() {
    // `data-range` allows to add/remove bool properties without 
    // changing code.
    uDom('input[data-range="bool"]').on('change', function() {
        changeUserSettings(this.id, this.checked);
    });

    uDom('input[name="displayTextSize"]').on('change', function(){
        changeUserSettings('displayTextSize', this.value);
    });

    // https://github.com/gorhill/httpswitchboard/issues/197
    uDom(window).on('beforeunload', prepareToDie);
};

/******************************************************************************/

uDom.onLoad(function() {
    var onUserSettingsReceived = function(userSettings) {
        // Cache copy
        cachedUserSettings = userSettings;

        // `data-range` allows to add/remove bool properties without 
        // changing code.
        uDom('input[data-range="bool"]').forEach(function(elem) {
            elem.prop('checked', userSettings[elem.attr('id')] === true);
        });

        uDom('input[name="displayTextSize"]').forEach(function(elem) {
            elem.prop('checked', elem.val() === userSettings.displayTextSize);
        });

        installEventHandlers();
    };
    messager.send({ what: 'getUserSettings' }, onUserSettingsReceived);
});

/******************************************************************************/

})();
