// ==UserScript==
// @name            url_breaker+
// @namespace       http://piro.sakura.ne.jp/
// @description     URL Breaker Modified Version
// @include         *
// ==/UserScript==

(function () {
     if (window.opera || !document.addEventListener) return;

     document.addEventListener("DOMContentLoaded", function () {
         var resolver = document.createNSResolver(document.documentElement);
         var nodes = document.evaluate(
             '/descendant::*[not(contains(" TITLE STYLE SCRIPT TEXTAREA XMP ", concat(" ", local-name(), " ")))]/child::text()',
             document.documentElement,
             resolver,
             XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
             null
         );
         //    var regexp = new RegExp("([!-%'-/:=\\?@\\[-`\\{-~]|&amp;)");
         var regexp = new RegExp("([!-%'\\)-/:=\\?@\\\\-`\\|-~]|&amp;)");
         var range  = document.createRange();
         var wbr    = document.createElement('wbr');
         var lastIndex;
         var node;
         for (var i = 0; i < nodes.snapshotLength; i++)    {
             node = nodes.snapshotItem(i);
             range.selectNode(node);
             while (node && (lastIndex = range.toString().search(regexp)) > -1) {
                 range.setStart(node, lastIndex+RegExp.$1.length);
                 range.insertNode(wbr.cloneNode(true));
                 node = node.nextSibling.nextSibling;
                 range.selectNode(node);
             }
         }
         range.detach();
     }, false );
})();

/*
    Original Script:
        url_breaker (made by asukaze)
        http://www.asukaze.net/soft/url_breaker/url_breaker.user.js
*/
