﻿// StripHTML.js
// Strips all HTML from item bodies

(function($) {

    var plugin = Echo.createPlugin({
        "name": "StripHTML",
        "applications": ["Stream"],
        "init": function(plugin, application) {
            plugin.extendRenderer("Item", "body", plugin.renderers.body(application), "StripHTML");

            plugin.providerWhitelist = ['Arktan'];
            $.merge(plugin.providerWhitelist, plugin.config.get(application, "providerWhitelist", []));
        }
    });

    plugin.renderers = {};
    
    plugin.renderers.body = function(application) {
        return function(element, dom) {
            var item = this;
            if (item.depth >= plugin.config.get(application, "depth", 0) && (!item.data.provider || !item.data.provider.name || $.inArray(item.data.provider.name, plugin.providerWhitelist))) {
                
                var urlRegex = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
                var validate = new RegExp(urlRegex);
                if (validate.test(item.data.object.content)) {
                    item.data.object.content = item.data.object.content.replace(urlRegex, "");
                    //item.data.object.content = "";
                }
                else {
                    item.data.object.content = plugin.stripTags(item.data.object.content);
                }

            }
            item.parentRenderer("body", arguments);
        };
    };

    plugin.stripTags = function(text) {
        return text.replace(/(<([^>]+)>)/ig, "").replace(/>/ig, "&gt;").replace(/</ig, "&lt;");
    };

})(jQuery);
