/* * s21g GoogleDocs Outliner * * (C) 2009 Genki Takiuchi */ function gdol_cleanup(){ var ol = document.getElementById("outline"); if(ol){ clearInterval(ol.timer); ol.doc.body.style.marginRight = '0px'; ol.parentNode.removeChild(ol); } } function gdol_toggle(){ var ol = document.getElementById('outline'); if(ol.hidden){ ol.style.height = ''; ol.style.bottom = '10px'; }else{ ol.style.bottom = ''; ol.style.height = '16px'; } ol.hidden = !ol.hidden; ol.updateMargin(); } function gdol_focus(id){ var frame = document.getElementById("wys_frame"); var doc = frame.contentDocument; var ol = document.getElementById("outline"); var elm = ol.list[id]; frame.contentWindow.scrollTo(0, elm.offsetTop); } (function(){ var lengthOf = function(str){ try{return str.replace(/¥s¥n/g, '').length;} catch(e){return 0;} }; function parse(elm, html, list){ if(elm.id == "outline") return; if(!elm.tagName){ if(html.marker){ var text = elm.textContent || elm.innerText; html[html.marker].add(lengthOf(text)); } return; } var m = elm.tagName.match(/h([1-6])/i); var count = 0; if(m){ var lv = m[1]; for(var l=1; l'); html.push(elm.innerHTML); html.push(''); html.marker = html.length; html.push({ count:0, toString:function(){ return ["", this.count, ""].join(""); }, parent:(lv > 1 ? html.stack[lv - 2] : null), add:function(c){this.count += c; if(this.parent) this.parent.add(c);} }); html.push('
'); html.stack = html.stack.slice(0, lv - 1); html.stack[lv - 1] = html[html.marker]; list.push(elm); } var elms = elm.childNodes; for(var i=0,l=elms.length; iGoogleDocs Outliner'); html.push(' [X]'); html.push('
'); parse(ol.doc.body, html, ol.list); html.push('
© 2009 takiuchi'); html = html.join(''); if(html != ol.innerHTML){ ol.innerHTML = html; ol.updateMargin(); } }; ol.timer = setInterval(refresh, 2000); refresh(); })();