(function() {

    angular.module('communityHTMLFilter', ['ngSanitize']).filter('communityHTMLFilter', function() {

        return function(input, readOnlyMode) {
            // Added as part of STRY11691339. If fails revert to else block
            try {
                if (input.indexOf(".servicenow.com") > -1) {
					// find in href attribute who has *.sevicenow.com. and replace 'nofollow' in rel with ""
                    var domTree = angular.element('<div>' + input + '</div>');
                    var items = domTree.find('a');
                    for (var i = 0; i < items.length; i++) {
                        var item = items[i];
                        var hrefValue = $(item).attr('href');
                        var relValue = $(item).attr('rel');
                        if (hrefValue && relValue) {
                            hrefValue = hrefValue.toLowerCase();
                            if (hrefValue.indexOf(".servicenow.com") > -1) {
								relValue=relValue.replace("nofollow","");
                                $(item).attr('rel', relValue.trim());
                            }
                        }
                    }
                    if (readOnlyMode) {
                        domTree.find('a').attr('target', '_blank');
                    }
                    return angular.element('<div>').append(domTree).html();
                } else {
                    if (readOnlyMode) {
                        var tree = angular.element('<div>' + input + '</div>'); //defensively wrap in a div to avoid 'invalid html' exception
                        tree.find('a').attr('target', '_blank'); //manipulate the parse tree
                        return angular.element('<div>').append(tree).html(); //trick to have a string representation
                    } else {
                        return input;
                    }
                }
            } catch (err) {
                console.error("err", err);
                return input;
            }

        };

    });

})();