(function () {
	if(navigator.userAgent.indexOf("Firefox")!=-1){

		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 zen = "っゎゃゅょヶヵ、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈〉《》「」『』【】＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨￢⇒⇔∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬Å‰＃♭♪†‡¶◯∮∑∟⊿￤＇＂";
		var regexp = new RegExp("([a-zA-Z0-9ｧ-ｫｬ-ｮｱ-ﾝｦｯ゛゜ー･､｡!-%'-\/\\:=?@\[-`{}()-~<>\^\|\*\";#&+.,_]|[ァ～ワ①-⑳Ⅰ-Ⅸⅰ-ⅹ０-９Ａ-Ｚａ-ｚΑ-Ωα-ωА-Яа-я─-╂]|["+ zen +"]|&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.setEnd(node, lastIndex+RegExp.$1.length);
				range.insertNode(wbr.cloneNode(true));
				node = node.nextSibling.nextSibling;
				range.selectNode(node);
			}
		}
		range.detach();

		document.body.style.width = '100%';
		focus();
	}
})();
