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