/*
 * word-break.js
 *
 * @see http://www.tagindex.com/cgi-lib/q1bbs/patio.cgi?mode=view&no=4529
 */

window./*@cc_on @if(@_jscript) attachEvent('on' + @else @*/addEventListener(/*@end @*/ 'load', function (Event) {
    var ElementNode = { div:document.createElement('div') };
    ElementNode.div.style.wordBreak = 'break-all';
    if(ElementNode.div.getAttribute('style')){ return false; }  // word-breakプロパティに対応するなら抜ける
    delete ElementNode.div;

    function setZeroWidthWord(HTMLElement){
        for(var i=0,l=HTMLElement.childNodes.length; i<l; i++){
            switch(HTMLElement.childNodes[i].nodeType){
                case 1:
                    setZeroWidthWord(HTMLElement.childNodes[i]);    // 再帰的に要素ノードをチェック
                    break;
                case 3:
                    HTMLElement.childNodes[i].nodeValue = HTMLElement.childNodes[i].nodeValue.split('').join(String.fromCharCode(8203));    // &#x200B; を一文字毎に挿入する
                    break;
            }
        }
    }

    if(ElementNode.target = document.querySelectorAll('.word-break') || document.getElementsByClassName('word-break')){
        
        for(var i=0,l=ElementNode.target.length; i<l; i++){
            setZeroWidthWord(ElementNode.target[i]);
        }
    }
    delete ElementNode.target;
},false);

