module.exports = function (RED) {
    "use strict";
    var multilangsentiment = require('multilang-sentiment');

    function MultiLangSentimentNode(n) {
        RED.nodes.createNode(this, n);
        this.lang = n.lang;
        this.property = n.property || "payload";
        var node = this;

        this.on("input", function (msg) {
            var value = RED.util.getMessageProperty(msg, node.property);
            if (value !== undefined) {
                multilangSentiment(value, node.lang || msg.lang || 'en', { 'words': msg.words || null, 'tokens': msg.tokens || null }, function (err, result) {
                    msg.sentiment = result;
                    msg.sentiment.comparative = msg.sentiment.score / msg.sentiment.tokens.length;      // temporarily addresses an issue in v2.0.0: https://github.com/marcellobarile/multilang-sentiment/issues/10
                    node.send(msg);
                });
            }
            else { node.send(msg); } // If no matching property - just pass it on.
        });
    }
    RED.nodes.registerType("mlsentiment", MultiLangSentimentNode);
}