1/** 2 * 3 * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 4 * @author Tom N Harris <tnharris@whoopdedo.org> 5 */ 6jQuery(function (){ 7 if(jQuery.browser.msie && 8 > parseFloat(jQuery.browser.version)){ 8 // Does MSIE support :before and :after ? 9 function isParentNode(p, n){ 10 if(!p) return false; 11 while(n){ 12 if(n == p) return true; 13 n = n.parentNode; 14 } 15 return false; 16 } 17 var q_open = Array(); 18 var q_close = Array(); 19 var ssheet = document.styleSheets[0]; 20 for(var i=0; i<ssheet.rules.length; i++){ 21 var srule = ssheet.rules[i]; 22 if(srule.selectorText=='Q'){ 23 var quotes = srule.style.quotes.split(' '); 24 for(var j=0; j<quotes.length; j+=2){ 25 var q = quotes[j]; 26 if(q.length < 3) continue; 27 var q1 = q.substring(1,q.length-1); 28 var q2 = q1; 29 if(j+1 < quotes.length){ 30 q = quotes[j+1]; 31 if(q.length >= 3){ 32 q2 = q.substring(1,q.length-1); 33 } 34 } 35 q_open.push(q1); 36 q_close.push(q2); 37 } 38 } 39 } 40 if(q_open.length==0) q_open.push('“'); 41 if(q_close.length==0) q_close.push('”'); 42 var qstack = Array(); 43 var qprev = null; 44 var qelems = document.getElementsByTagName('q'); 45 for(var i=0; i<qelems.length; i++){ 46 var q = qelems[i]; 47 if(isParentNode(qprev, q)){ 48 if(qprev) 49 qstack.push(qprev); 50 }else{ 51 while(qstack.length > 0){ 52 qprev = qstack.pop(); 53 if(isParentNode(qprev, q)){ 54 qstack.push(qprev); 55 break; 56 } 57 } 58 } 59 var mark_before = document.createTextNode(q_open[qstack.length % q_open.length]); 60 var mark_after = document.createTextNode(q_close[qstack.length % q_open.length]); 61 q.insertBefore(mark_before, q.firstChild); 62 q.insertBefore(mark_after); 63 qprev = q; 64 } 65 var bqelems = document.getElementsByTagName('blockquote'); 66 for (var i=0; i<bqelems.length; i++){ 67 var bq = bqelems[i]; 68 var bq_cite = bq.getAttribute('title'); 69 if (bq.className == 'citation' && bq_cite) { 70 var bq_after = document.createElement('div'); 71 bq_after.setAttribute('className', 'citation_after'); 72 bq_after.innerHTML = '—' + bq_cite; 73 bq.appendChild(bq_after); 74 } 75 } 76 } 77}); 78