// ==UserScript==
// @name            url_breaker
// @namespace       http://www.asukaze.net/
// @description     URL Breaker
// @include         *
// ==/UserScript==

(function () {
		   
	if(navigator.appName == 'Netscape'){  
		var resolver = document.createNSResolver(document.documentElement);
		var nodes = document.evaluate(
				'/descendant::*[local-name() = "A"]/descendant::text()',
				document.documentElement,
				resolver,
				XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
				null
			);
		var regexp = new RegExp("([!-%'-/:=\\?@\\[-`\\{-~]|&amp;)");
		var range  = document.createRange();
		var wbr    = document.createElement('wbr');
		for (var i = 0; i < nodes.snapshotLength; i++)
		{
			var node = nodes.snapshotItem(i);
			var lastIndex = 0;
			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();
	}

})();

