erbook 6.1.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. data/bin/erbook +29 -25
  2. data/doc/HelloWorld.spec +3 -1
  3. data/doc/api/classes/ERBook.html +86 -0
  4. data/doc/api/classes/ERBook/Document.html +399 -0
  5. data/doc/api/classes/ERBook/Document/Node.html +110 -0
  6. data/doc/api/classes/ERBook/Template.html +309 -0
  7. data/doc/api/classes/ERBook/Template/Sandbox.html +134 -0
  8. data/doc/api/classes/RDoc.html +69 -0
  9. data/doc/api/classes/RDoc/AnyMethod.html +249 -0
  10. data/doc/api/classes/RDoc/DummyMarkup.html +60 -0
  11. data/doc/api/classes/RDoc/DummyMixin.html +54 -0
  12. data/doc/api/classes/RDoc/DummyOptions.html +60 -0
  13. data/doc/api/classes/RDoc/TopLevel.html +344 -0
  14. data/doc/api/classes/String.html +212 -0
  15. data/doc/api/created.rid +1 -0
  16. data/doc/api/css/main.css +263 -0
  17. data/doc/api/css/panel.css +383 -0
  18. data/doc/api/css/reset.css +53 -0
  19. data/doc/api/files/ANN_eml.html +276 -0
  20. data/doc/api/files/ANN_html.html +407 -0
  21. data/doc/api/files/ANN_txt.html +271 -0
  22. data/doc/api/files/LICENSE.html +76 -0
  23. data/doc/api/files/lib/erbook/document_rb.html +74 -0
  24. data/doc/api/files/lib/erbook/rdoc_rb.html +77 -0
  25. data/doc/api/files/lib/erbook/template_rb.html +66 -0
  26. data/doc/api/files/lib/erbook/to_xhtml_rb.html +89 -0
  27. data/doc/api/files/lib/erbook_rb.html +70 -0
  28. data/doc/api/i/arrows.png +0 -0
  29. data/doc/api/i/results_bg.png +0 -0
  30. data/doc/api/i/tree_bg.png +0 -0
  31. data/doc/api/index.html +14 -18
  32. data/doc/api/js/jquery-1.3.2.min.js +19 -0
  33. data/doc/api/js/jquery-effect.js +593 -0
  34. data/doc/api/js/main.js +22 -0
  35. data/doc/api/js/searchdoc.js +605 -0
  36. data/doc/api/panel/index.html +63 -0
  37. data/doc/api/panel/search_index.js +1 -0
  38. data/doc/api/panel/tree.js +1 -0
  39. data/doc/formats.erb +63 -115
  40. data/doc/history.erb +125 -92
  41. data/doc/index.erb +12 -7
  42. data/doc/index.xhtml +1020 -1347
  43. data/doc/intro.erb +42 -40
  44. data/doc/setup.erb +18 -18
  45. data/doc/theory.erb +24 -31
  46. data/doc/usage.erb +14 -24
  47. data/fmt/xhtml.icons/index.yaml +16 -14
  48. data/fmt/xhtml.icons/rakefile +33 -0
  49. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/16x16/places/start-here.png +0 -0
  50. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/32x32/actions/go-down.png +0 -0
  51. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/32x32/actions/go-up.png +0 -0
  52. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/32x32/places/start-here.png +0 -0
  53. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/32x32/status/software-update-available.png +0 -0
  54. data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/apps/accessories-text-editor.png +0 -0
  55. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/48x48/apps/internet-group-chat.png +0 -0
  56. data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/emblems/emblem-important.png +0 -0
  57. data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/status/dialog-error.png +0 -0
  58. data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/status/dialog-information.png +0 -0
  59. data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/status/dialog-warning.png +0 -0
  60. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/COPYING +1 -0
  61. data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/README +0 -0
  62. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/bookmark-new.svg +672 -0
  63. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/go-down.svg +200 -0
  64. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/go-home.svg +445 -0
  65. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/go-up.svg +196 -0
  66. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/view-refresh.svg +393 -0
  67. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/apps/accessories-text-editor.svg +554 -0
  68. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/apps/internet-group-chat.svg +312 -0
  69. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/emblems/emblem-favorite.svg +242 -0
  70. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/emblems/emblem-important.svg +164 -0
  71. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/mimetypes/application-certificate.svg +443 -0
  72. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/places/start-here.svg +492 -0
  73. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/status/dialog-error.svg +330 -0
  74. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/status/dialog-information.svg +1159 -0
  75. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/status/dialog-warning.svg +373 -0
  76. data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/status/software-update-available.svg +209 -0
  77. data/fmt/xhtml.scripts/jquery-1.3.2.min.js +19 -0
  78. data/fmt/xhtml.scripts/jquery.localscroll-1.2.7-min.js +9 -0
  79. data/fmt/xhtml.scripts/jquery.scrollTo-1.4.1-min.js +11 -0
  80. data/fmt/xhtml.yaml +470 -454
  81. data/lang/de.yaml +5 -5
  82. data/lang/el.yaml +4 -4
  83. data/lang/es.yaml +5 -5
  84. data/lang/fr.yaml +5 -5
  85. data/lang/it.yaml +5 -5
  86. data/lang/ja.yaml +4 -4
  87. data/lang/ko.yaml +4 -4
  88. data/lang/nl.yaml +4 -4
  89. data/lang/phrases.yaml +4 -4
  90. data/lang/pt.yaml +5 -5
  91. data/lang/ru.yaml +5 -5
  92. data/lang/zh.yaml +5 -5
  93. data/lang/zt.yaml +5 -5
  94. data/lib/erbook.rb +12 -5
  95. data/lib/erbook/document.rb +127 -107
  96. data/lib/erbook/rdoc.rb +18 -11
  97. data/lib/erbook/template.rb +86 -176
  98. data/lib/erbook/to_xhtml.rb +98 -25
  99. data/{Rakefile → rakefile} +1 -0
  100. metadata +106 -53
  101. data/doc/api/ERBook.html +0 -35
  102. data/doc/api/ERBook/Document.html +0 -669
  103. data/doc/api/ERBook/Document/Node.html +0 -102
  104. data/doc/api/ERBook/Template.html +0 -670
  105. data/doc/api/RDoc.html +0 -23
  106. data/doc/api/RDoc/AnyMethod.html +0 -302
  107. data/doc/api/RDoc/DummyMarkup.html +0 -73
  108. data/doc/api/RDoc/DummyMixin.html +0 -23
  109. data/doc/api/RDoc/DummyOptions.html +0 -140
  110. data/doc/api/RDoc/TopLevel.html +0 -465
  111. data/doc/api/String.html +0 -372
  112. data/doc/api/all-methods.html +0 -253
  113. data/doc/api/all-namespaces.html +0 -42
  114. data/doc/api/app.js +0 -18
  115. data/doc/api/jquery.js +0 -11
  116. data/doc/api/readme.html +0 -38
  117. data/doc/api/style.css +0 -68
  118. data/doc/api/syntax_highlight.css +0 -21
  119. data/fmt/xhtml.icons/tango-icon-theme-0.8.1/48x48/README +0 -2
  120. data/fmt/xhtml.icons/tango-icon-theme-0.8.1/48x48/apps/internet-group-chat.png +0 -0
  121. data/fmt/xhtml.icons/tango-icon-theme-0.8.1/COPYING +0 -67
@@ -0,0 +1,19 @@
1
+ /*
2
+ * jQuery JavaScript Library v1.3.2
3
+ * http://jquery.com/
4
+ *
5
+ * Copyright (c) 2009 John Resig
6
+ * Dual licensed under the MIT and GPL licenses.
7
+ * http://docs.jquery.com/License
8
+ *
9
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
10
+ * Revision: 6246
11
+ */
12
+ (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
13
+ /*
14
+ * Sizzle CSS Selector Engine - v0.9.3
15
+ * Copyright 2009, The Dojo Foundation
16
+ * Released under the MIT, BSD, and GPL Licenses.
17
+ * More information: http://sizzlejs.com/
18
+ */
19
+ (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
@@ -0,0 +1,9 @@
1
+ /**
2
+ * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
3
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
4
+ * Dual licensed under MIT and GPL.
5
+ * Date: 3/11/2009
6
+ * @author Ariel Flesler
7
+ * @version 1.2.7
8
+ **/
9
+ ;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);
@@ -0,0 +1,11 @@
1
+ /**
2
+ * jQuery.ScrollTo - Easy element scrolling using jQuery.
3
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
4
+ * Dual licensed under MIT and GPL.
5
+ * Date: 3/9/2009
6
+ * @author Ariel Flesler
7
+ * @version 1.4.1
8
+ *
9
+ * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
10
+ */
11
+ ;(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);
data/fmt/xhtml.yaml CHANGED
@@ -1,17 +1,29 @@
1
+ #--
2
+ # Copyright 2007 Suraj N. Kurapati
3
+ # See the LICENSE file for details.
4
+ #++
5
+
1
6
  desc: web page for the Internet
2
7
 
3
8
  code: |
9
+ ICONS_DIR = File.join(ERBook::FORMATS_DIR, 'xhtml.icons')
10
+ SCRIPTS_DIR = File.join(ERBook::FORMATS_DIR, 'xhtml.scripts')
11
+
4
12
  # load the String#to_xhtml and String#to_inline_xhtml methods
5
13
  require 'erbook/to_xhtml'
6
14
 
7
15
  class String
16
+ ##
8
17
  # Transforms this UTF-8 string into XML entities.
18
+ #
9
19
  def to_xml_entities
10
20
  unpack('U*').map! {|c| "&##{c};"}.join
11
21
  end
12
22
 
23
+ ##
13
24
  # Transforms this string into a valid URI fragment.
14
25
  # See http://www.nmt.edu/tcc/help/pubs/xhtml/id-type.html
26
+ #
15
27
  def to_uri_fragment
16
28
  # remove XML tags from the input
17
29
  buf = gsub(/<.*?>/, '')
@@ -32,41 +44,146 @@ code: |
32
44
  end
33
45
 
34
46
  class Hash
47
+ ##
35
48
  # Transforms this hash into a string of XML attribute key="value" pairs.
49
+ #
36
50
  def to_xml_atts
37
51
  inject([]) {|s,(k,v)| s << %( #{k}="#{v}") }.join
38
52
  end
39
53
  end
40
54
 
55
+ require 'erb'
56
+
41
57
  module ERBook
42
- class Template
58
+ ##
59
+ # Encodes the given input in base64 format.
60
+ #
61
+ def ERBook.base_64_encode input #:nodoc:
62
+ [input].pack('m')
63
+ end
64
+
65
+ ##
66
+ # Returns a string denoting embedded, base64 encoded data.
67
+ #
68
+ def ERBook.base_64_embed data, format #:nodoc:
69
+ "data:#{format.to_s.downcase};base64,#{data.tr("\n", '')}"
70
+ end
71
+
72
+ ##
73
+ # Returns a string denoting embedded, base64 encoded image data.
74
+ #
75
+ # [format]
76
+ # type of image data (e.g. PNG, JPEG, GIF, etc.)
77
+ #
78
+ def ERBook.base_64_embed_image_data data, format #:nodoc:
79
+ base_64_embed data, "image/#{format}"
80
+ end
81
+
82
+ # admonition icons
83
+
84
+ ICON_DEFS = YAML.load_file File.join(ICONS_DIR, 'index.yaml')
85
+
86
+ class Icon < Struct.new(:origin, :path, :name, :format, :data) #:nodoc:
87
+ ##
88
+ # Returns a data URI containing embedded image data.
89
+ #
90
+ def data_uri
91
+ ERBook.base_64_embed_image_data self.data, self.format
92
+ end
93
+
94
+ ##
95
+ # Returns a CSS url() containing embedded image data.
96
+ #
97
+ def data_css
98
+ %{url("#{data_uri}")}
99
+ end
100
+
101
+ ##
102
+ # Returns a XML entity reference (to this icon's
103
+ # embedded image data) ready for insertion into XML.
104
+ #
105
+ def entity_xml
106
+ "&#{entity_name};"
107
+ end
108
+
109
+ ##
110
+ # Returns the name of the XML entity whose
111
+ # value contains embedded image data.
112
+ #
113
+ def entity_name
114
+ "icon_#{name}"
115
+ end
116
+
117
+ ##
118
+ # Returns an <img/> tag that renders the image
119
+ # data embedded as an ENTITY in the html DOCTYPE.
120
+ #
121
+ def to_xhtml atts = {}
122
+ atts[:alt] ||= name
123
+ atts[:src] = entity_xml
124
+ atts[:class] = :icon
125
+ "<img#{atts.to_xml_atts}/>"
126
+ end
127
+ end
128
+
129
+ ICON_BY_NAME = {}
130
+
131
+ ICON_DEFS.each_pair do |name, path|
132
+ format = File.extname(path).sub('.', '')
133
+ origin = path[/^\w+/]
134
+
135
+ path = File.join(ICONS_DIR, path) # make the path absolute
136
+ data = base_64_encode File.open(path, 'rb') {|f| f.read }
137
+
138
+ ICON_BY_NAME[name] = Icon.new(origin, path, name, format, data)
139
+ end
140
+
141
+ ICONS = ICON_BY_NAME.values
142
+
143
+ class Template::Sandbox
144
+ ##
43
145
  # Protects the given content from the text-to-XHTML conversion process.
146
+ #
44
147
  def verbatim content
45
- ERB::Util.html_escape content
148
+ ::ERB::Util.html_escape content
46
149
  end
47
150
 
151
+ ##
48
152
  # Returns XHTML for a hyperlink to the given
49
153
  # URL of the given label and mouse-hover title.
154
+ #
50
155
  def hyperlink url, label = url, title = nil
51
156
  %{<a href="#{url}"#{%{ title="#{title}"} if title}>#{label}</a>}
52
157
  end
53
158
 
159
+ ##
54
160
  # Returns an <img/> tag that embeds the given image file.
55
161
  #
56
- # path:: path to the image file
57
- # format:: format of the image file (e.g. PNG, JPEG, GIF, etc.)
58
- # atts:: additional attributes for the <img> tag
162
+ # [path]
163
+ # path to the image file
164
+ #
165
+ # [format]
166
+ # format of the image file (e.g. PNG, JPEG, GIF, etc.)
167
+ #
168
+ # [atts]
169
+ # additional attributes for the <img> tag
59
170
  #
60
171
  def embed_image_file path, format = path[/\w+/], atts = {}
61
172
  data = ERBook.base_64_encode File.read(path)
62
173
  embed_image_data data, format, atts
63
174
  end
64
175
 
176
+ ##
65
177
  # Returns an <img/> tag that embeds the given raw image data.
66
178
  #
67
- # data:: raw image data
68
- # format:: format of the image file (e.g. PNG, JPEG, GIF, etc.)
69
- # atts:: additional attributes for the <img> tag
179
+ # [data]
180
+ # raw image data
181
+ #
182
+ # [format]
183
+ # format of the image file (e.g. PNG, JPEG, GIF, etc.)
184
+ #
185
+ # [atts]
186
+ # additional attributes for the <img> tag
70
187
  #
71
188
  def embed_image_data data, format, atts = {}
72
189
  atts[:src] = ERBook.base_64_embed_image_data(data, format)
@@ -75,235 +192,176 @@ code: |
75
192
  end
76
193
 
77
194
  class Document::Node
195
+ ##
78
196
  # Returns the user-defined title for this node's content.
197
+ #
79
198
  def title
80
199
  @title ||= args[0]
81
200
  end
82
201
 
202
+ ##
83
203
  # Returns the user-defined indentifer for this node.
204
+ #
84
205
  def id
85
206
  @id ||= args[1]
86
207
  end
87
208
 
88
- ##
89
209
  # utility methods
90
- #
91
-
92
- def type_label #:nodoc:
93
- ERBook::PHRASES[type.to_s.capitalize]
94
- end
95
-
96
- # Returns the title of this node as XHTML.
97
- def title_xhtml
98
- title.to_s.to_inline_xhtml
99
- end
100
-
101
- # Returns the content of this node as XHTML.
102
- def content_xhtml
103
- content.to_s.to_xhtml
104
- end
105
-
106
- # Returns the content of this node as XHTML inside a <div/>.
107
- def content_xhtml_div #:nodoc:
108
- %{<div class="content">#{content_xhtml}</div>}
109
- end
110
-
111
- # Returns a hyperlink to this node containing its title.
112
- def title_link title = nil
113
- title || title_xhtml
114
- end
115
210
 
116
- # Returns a hyperlink to this node
117
- # containing its LaTeX-style index number.
118
- def index_link
119
- index
120
- end
121
-
122
- # Returns a hyperlink to this node containing its occurrence number.
123
- def number_link
124
- [type_label, number].compact.join(' ')
125
- end
126
-
127
- # Returns a hyperlink to this node containing
128
- # its ocurrence number and its title.
129
- def number_and_title_link #:nodoc:
130
- "#{number_link}.&nbsp;&nbsp;#{title_link}"
131
- end
132
-
133
- # Returns a hyperlink to this node containing
134
- # its LaTeX-style index number and its title.
135
- def index_and_title_link #:nodoc:
136
- "#{index_link}&nbsp;&nbsp;#{title_link}"
137
- end
138
-
139
- # Returns a navigation menu relative to this node.
140
- def navigation
141
- self.class.navigation(
142
- here_frag,
143
- (list_frag if defn['toc'] || defn['lof']),
144
- (prev_node.here_frag if prev_node),
145
- (next_node.here_frag if next_node)
146
- )
147
- end
148
-
149
- LIST_SIGN = '&equiv;' # identical to
150
- HERE_SIGN = '&#x25CE;' # bullseye
151
- PREV_SIGN = '&#x25B3;' # white up-pointing triangle
152
- NEXT_SIGN = '&#x25BD;' # white down-pointing triangle
211
+ def type_label #:nodoc:
212
+ ERBook::PHRASES[type.to_s.capitalize]
213
+ end
153
214
 
154
- LIST_TEXT = ERBook::PHRASES['Reverse jump to listing']
155
- HERE_TEXT = ERBook::PHRASES['Jump to this segment']
156
- PREV_TEXT = ERBook::PHRASES['Jump to previous segment']
157
- NEXT_TEXT = ERBook::PHRASES['Jump to next segment']
215
+ ##
216
+ # Returns the title of this node as XHTML.
217
+ #
218
+ def title_xhtml
219
+ title.to_s.to_inline_xhtml
220
+ end
158
221
 
159
- # Calculates a local navigation menu containing links
160
- # to the given URI fragments (which can be nil).
161
- def self.navigation here_frag, list_frag, prev_frag, next_frag
162
- list_link = list_frag ? %{<a title="#{LIST_TEXT}" href="##{list_frag}">#{LIST_SIGN}</a>} : LIST_SIGN
222
+ ##
223
+ # Returns the content of this node as XHTML.
224
+ #
225
+ def content_xhtml
226
+ content.join.to_xhtml
227
+ end
163
228
 
164
- here_link = here_frag ? %{<a title="#{HERE_TEXT}" href="##{here_frag}">#{HERE_SIGN}</a>} : HERE_SIGN
229
+ ##
230
+ # Returns the content of this node as XHTML inside a <div/>.
231
+ #
232
+ def content_xhtml_div #:nodoc:
233
+ %{<div class="content">#{content_xhtml}</div>}
234
+ end
165
235
 
166
- prev_link = prev_frag ? %{<a title="#{PREV_TEXT}" href="##{prev_frag}">#{PREV_SIGN}</a>} : PREV_SIGN
236
+ ##
237
+ # Returns a hyperlink to this node containing its title.
238
+ #
239
+ def title_link title = nil
240
+ title || title_xhtml
241
+ end
167
242
 
168
- next_link = next_frag ? %{<a title="#{NEXT_TEXT}" href="##{next_frag}">#{NEXT_SIGN}</a>} : NEXT_SIGN
243
+ ##
244
+ # Returns a hyperlink to this node
245
+ # containing its LaTeX-style index number.
246
+ #
247
+ def index_link
248
+ index
249
+ end
169
250
 
170
- %{<a name="#{here_frag}"/><div class="nav" id="#{here_frag}">#{list_link}#{prev_link}#{next_link}#{here_link}</div>}
171
- end
251
+ ##
252
+ # Returns a hyperlink to this node containing its occurrence number.
253
+ #
254
+ def number_link
255
+ [type_label, number].compact.join(' ')
256
+ end
172
257
 
173
- # Returns a hyperlink to this node.
174
- #
175
- # @param [String] label
176
- # Optional label (may contain XHTML) for the hyperlink.
177
- #
178
- # If not specified, the title and designation of
179
- # this node will be used as the label instead.
180
- #
181
- def xref_link label = nil
182
- prefix = [type_label, index || number].compact.join(' ')
258
+ ##
259
+ # Returns a hyperlink to this node containing
260
+ # its ocurrence number and its title.
261
+ #
262
+ def number_and_title_link #:nodoc:
263
+ "#{number_link}.&nbsp;&nbsp;#{title_link}"
264
+ end
183
265
 
184
- title_text =
185
- if type == 'reference'
186
- prefix
187
- else
188
- [prefix, (%{"#{title}"} if title)].compact.join('. ')
189
- end
266
+ ##
267
+ # Returns a hyperlink to this node containing
268
+ # its LaTeX-style index number and its title.
269
+ #
270
+ def index_and_title_link #:nodoc:
271
+ "#{index_link}&nbsp;&nbsp;#{title_link}"
272
+ end
190
273
 
191
- title_xhtml =
192
- if label
193
- label
194
- else
195
- title_text
196
- end.to_s.to_inline_xhtml
274
+ ##
275
+ # Returns a navigation menu relative to this node.
276
+ #
277
+ def navigation
278
+ self.class.navigation(
279
+ here_frag,
280
+ (list_frag if defn['toc'] || defn['lof']),
281
+ (prev_node.here_frag if prev_node),
282
+ (next_node.here_frag if next_node)
283
+ )
284
+ end
197
285
 
198
- %{<a class="xref" href="##{here_frag}"#{
199
- %( title="#{ERB::Util.h title_text}") if label
200
- }>#{title_xhtml}</a>}
201
- end
286
+ HERE_TEXT = ERBook::PHRASES['Focus this segment']
287
+ PREV_TEXT = ERBook::PHRASES['Focus previous segment']
288
+ NEXT_TEXT = ERBook::PHRASES['Focus next segment']
289
+ LIST_TEXT = ERBook::PHRASES['Return to listing']
290
+
291
+ HERE_SIGN = ICON_BY_NAME['nav_here'].to_xhtml(:alt => '&lowast;')
292
+ PREV_SIGN = ICON_BY_NAME['nav_prev'].to_xhtml(:alt => '&uarr;')
293
+ NEXT_SIGN = ICON_BY_NAME['nav_next'].to_xhtml(:alt => '&darr;')
294
+ LIST_SIGN = ICON_BY_NAME['nav_list'].to_xhtml(:alt => '&equiv;')
295
+
296
+ ##
297
+ # Calculates a local navigation menu containing links
298
+ # to the given URI fragments (which can be nil).
299
+ #
300
+ def self.navigation here_frag, list_frag, prev_frag, next_frag
301
+ here_link = %{<a title="#{HERE_TEXT}" href="##{here_frag}">#{HERE_SIGN}</a>} if here_frag
302
+ prev_link = %{<a title="#{PREV_TEXT}" href="##{prev_frag}">#{PREV_SIGN}</a>} if prev_frag
303
+ next_link = %{<a title="#{NEXT_TEXT}" href="##{next_frag}">#{NEXT_SIGN}</a>} if next_frag
304
+ list_link = %{<a title="#{LIST_TEXT}" href="##{list_frag}">#{LIST_SIGN}</a>} if list_frag
305
+
306
+ %{<a name="#{here_frag}"/><div class="nav" id="#{here_frag}">#{here_link} #{prev_link} #{next_link} #{list_link}</div>}
307
+ end
202
308
 
309
+ ##
310
+ # Returns a hyperlink to this node.
311
+ #
312
+ # [label]
313
+ # Optional label (may contain XHTML) for the hyperlink.
314
+ #
315
+ # If not specified, the title and designation of
316
+ # this node will be used as the label instead.
317
+ #
318
+ def xref_link label = nil
319
+ prefix = [type_label, index || number].compact.join(' ')
320
+
321
+ caption =
322
+ if type == 'reference'
323
+ prefix
324
+ else
325
+ [prefix, (%{"#{title}"} if label && title)].compact.join('. ')
326
+ end
327
+
328
+ label_xhtml = (label || title).to_s.to_inline_xhtml
329
+
330
+ %{<a class="xref" href="##{here_frag}" title="#{::ERB::Util.h caption}">#{label_xhtml}</a>}
331
+ end
203
332
 
204
- ##
205
333
  # URI fragments
206
- #
207
334
 
208
- @@frags = []
335
+ @@frags = []
209
336
 
210
- # Returns a unique URI fragment for this node.
211
- def here_frag #:nodoc:
212
- unless defined? @here_frag
213
- salt = object_id.abs
214
- frag = (id || title || salt).to_s.to_uri_fragment
337
+ ##
338
+ # Returns a unique URI fragment for this node.
339
+ #
340
+ def here_frag #:nodoc:
341
+ unless defined? @here_frag
342
+ salt = object_id.abs
343
+ frag = (id || title || salt).to_s.to_uri_fragment
215
344
 
216
- # make it unique
217
- while @@frags.include? frag
218
- frag << '-' << (index || number || salt).to_s
345
+ # make it unique
346
+ while @@frags.include? frag
347
+ frag << '-' << (index || number || salt).to_s
348
+ end
349
+
350
+ @@frags << frag
351
+ @here_frag = frag
219
352
  end
220
353
 
221
- @@frags << frag
222
- @here_frag = frag
354
+ @here_frag
223
355
  end
224
356
 
225
- @here_frag
226
- end
227
-
228
- # Returns the URI fragment for the location in the table
229
- # of contents / list of figures that points this node.
230
- def list_frag #:nodoc:
231
- @list_frag ||= "rev:#{here_frag}"
232
- end
233
- end
234
-
235
- # Encodes the given input in base64 format.
236
- def ERBook.base_64_encode input #:nodoc:
237
- [input].pack('m')
238
- end
239
-
240
- # Returns a string denoting embedded, base64 encoded data.
241
- def ERBook.base_64_embed data, format #:nodoc:
242
- "data:#{format.to_s.downcase};base64,#{data.tr("\n", '')}"
243
- end
244
-
245
- # Returns a string denoting embedded, base64 encoded image data.
246
- #
247
- # format:: format of the image data (e.g. PNG, JPEG, GIF, etc.)
248
- #
249
- def ERBook.base_64_embed_image_data data, format #:nodoc:
250
- base_64_embed data, "image/#{format}"
251
- end
252
-
253
- ##
254
- # admonition icons
255
- #
256
-
257
- ICONS_DIR = File.join(ERBook::FORMATS_DIR, 'xhtml.icons')
258
- ICON_DEFS = YAML.load_file File.join(ICONS_DIR, 'index.yaml')
259
-
260
- Icon = Struct.new(:origin, :path, :name, :format, :data)
261
- class Icon #:nodoc:
262
- # Returns a data URI containing embedded image data.
263
- def data_uri
264
- ERBook.base_64_embed_image_data self.data, self.format
265
- end
266
-
267
- # Returns a CSS url() containing embedded image data.
268
- def data_css
269
- %{url("#{data_uri}")}
270
- end
271
-
272
- # Returns a XML entity reference (to this icon's
273
- # embedded image data) ready for insertion into XML.
274
- def entity_xml
275
- "&#{entity_name};"
276
- end
277
-
278
- # Returns the name of the XML entity whose
279
- # value contains embedded image data.
280
- def entity_name
281
- "icon_#{name}"
282
- end
283
-
284
- # Returns an <img/> tag that renders the image
285
- # data embedded as an ENTITY in the html DOCTYPE.
286
- def to_xhtml atts = {}
287
- atts[:alt] ||= name
288
- atts[:src] = entity_xml
289
- atts[:class] = :icon
290
- "<img#{atts.to_xml_atts}/>"
291
- end
292
- end
293
-
294
- ICON_BY_NAME = {}
295
-
296
- ICON_DEFS.each_pair do |name, path|
297
- format = File.extname(path).sub('.', '')
298
- origin = path[/^\w+/]
299
-
300
- path = File.join(ICONS_DIR, path) # make the path absolute
301
- data = base_64_encode File.open(path, 'rb') {|f| f.read }
302
-
303
- ICON_BY_NAME[name] = Icon.new(origin, path, name, format, data)
357
+ ##
358
+ # Returns the URI fragment for the location in the table
359
+ # of contents / list of figures that points this node.
360
+ #
361
+ def list_frag #:nodoc:
362
+ @list_frag ||= "rev:#{here_frag}"
363
+ end
304
364
  end
305
-
306
- ICONS = ICON_BY_NAME.values
307
365
  end
308
366
 
309
367
 
@@ -317,6 +375,7 @@ nodes:
317
375
  number: false
318
376
  silent: false
319
377
  inline: true
378
+ bypass: true
320
379
  output: <%= @node.content_xhtml %>
321
380
 
322
381
  # Structure
@@ -473,7 +532,7 @@ nodes:
473
532
  <%=
474
533
  query, label = @node.args
475
534
 
476
- scope = @nodes.select {|n| n.content }
535
+ scope = @nodes.select {|n| n.content }
477
536
  target = scope.find {|n| n.id == query } || # id has 1st priority
478
537
  scope.find {|n| n.title == query }
479
538
 
@@ -492,7 +551,6 @@ nodes:
492
551
  index: false
493
552
  number: true
494
553
  silent: true
495
- inline: true
496
554
 
497
555
  cite:
498
556
  toc: false
@@ -574,51 +632,43 @@ output: |
574
632
 
575
633
  %{#{ERBook::Document::Node.navigation label, "rev:#{label}", nil, nil}<h2 class="title">#{label}</h2> <ol>#{nested}</ol>}
576
634
  end
577
- %>
578
- <?xml version="1.0" encoding="utf-8"?>
635
+ %><?xml version="1.0" encoding="utf-8"?>
579
636
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
580
637
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
581
- <% ICONS.each do |icon| %>
638
+ %|ICONS.each |icon|
582
639
  <!ENTITY <%= icon.entity_name %> "<%= icon.data_uri %>">
583
- <% end %>
584
640
  ]>
585
641
  <html xmlns="http://www.w3.org/1999/xhtml">
586
642
  <head>
587
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
643
+ <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/>
588
644
  <meta name="generator" content="<%= ERBook::DISPLAY %>"/>
589
645
 
590
- <% if $title %>
646
+ % if $title
591
647
  <title><%= $title.to_s.to_inline_xhtml %></title>
592
- <% end %>
593
648
 
594
- <% if $authors %>
649
+ % if $authors
595
650
  <meta name="author" content="<%= $authors.keys.join(', ') %>"/>
596
- <% end %>
597
651
 
598
- <% if $date %>
652
+ % if $date
599
653
  <meta name="date" content="<%= $date %>"/>
600
- <% end %>
601
654
 
602
- <% if $feeds %>
603
- <% $feeds.each_pair do |url, fmt| %>
655
+ % if $feeds
656
+ % $feeds.each_pair do |url, fmt|
604
657
  <link rel="alternate" type="application/<%= fmt %>+xml" href="<%= url %>"/>
605
- <% end %>
606
- <% end %>
607
658
 
608
- <% @format['styles'].each do |style| %>
609
- <% style.each_pair do |media, code| %>
659
+ % require 'rainpress'
660
+ % @format['styles'].each do |style|
661
+ % style.each_pair do |media, code|
610
662
  <style type="text/css" media="<%= media %>">
611
- <![CDATA[<%= ERB.new(code).result(binding) %>]]>
663
+ /*<![CDATA[*/<%~ Rainpress.compress(code) %>/*]]>*/
612
664
  </style>
613
- <% end %>
614
- <% end %>
615
665
 
616
666
  <style type="text/css" media="screen">
617
- <![CDATA[
667
+ /*<![CDATA[*/
618
668
  /* decorate external hyperlinks with a visual indicator */
619
669
  a[href]:not([href^="#"])
620
670
  {
621
- background : <%= ICON_BY_NAME['link'].data_css %>;
671
+ background : <%= ICON_BY_NAME['hyperlink'].data_css %>;
622
672
  background-position : center right;
623
673
  background-repeat : no-repeat;
624
674
  padding-right : 13px;
@@ -633,8 +683,28 @@ output: |
633
683
  padding-left : 65px;
634
684
  min-height : 50px;
635
685
  }
636
- ]]>
686
+ /*]]>*/
637
687
  </style>
688
+
689
+ <script type="text/javascript">
690
+ //<![CDATA[
691
+ %< File.join(SCRIPTS_DIR, 'jquery-1.3.2.min.js')
692
+ %< File.join(SCRIPTS_DIR, 'jquery.scrollTo-1.4.1-min.js')
693
+ %< File.join(SCRIPTS_DIR, 'jquery.localscroll-1.2.7-min.js')
694
+
695
+ $(document).ready(
696
+ function(){
697
+ $.localScroll({
698
+ // the default 1000 is too slow, and 500 is too fast
699
+ duration: 700,
700
+
701
+ // allow the CSS ':target' pseudo-selector to work properly
702
+ hash: true, onAfter: function(){ location = location; }
703
+ });
704
+ }
705
+ );
706
+ //]]>
707
+ </script>
638
708
  </head>
639
709
  <body>
640
710
  <div id="body">
@@ -646,166 +716,168 @@ output: |
646
716
  lof_sections,
647
717
  (ERBook::PHRASES['References'] if references)
648
718
  ].flatten.compact
649
-
650
- if nav.length > 1
651
719
  %>
652
- <ul id="nav" class="nav">
653
- <% nav.each do |section| %>
654
- <li><a id="rev:<%= section %>" href="#<%= section %>"><%= section %></a></li>
655
- <% end %>
656
- </ul>
657
- <% end %>
720
+ % if nav.length > 1
721
+ <div id="nav"><%=
722
+ nav.map do |section|
723
+ %{<a id="rev:#{ section }" href="##{ section }">#{ section }</a>}
724
+ end.join(' &middot; ')
725
+ %></div>
658
726
 
659
727
  <br style="display: none"/>
660
728
  <hr style="display: none"/>
661
729
  <br style="display: none"/>
662
730
 
663
- <%= node = @nodes_by_type['header_outside_above'].first and node.output %>
731
+
732
+ %= node = @nodes_by_type['header_outside_above'].first and node.output
733
+
664
734
  <div id="header">
665
- <%= node = @nodes_by_type['header_inside_above'].first and node.output %>
666
- <% if header = @nodes_by_type['header'].first %>
667
- <%= header.output %>
668
- <% else %>
669
- <% if $logo %>
670
- <div class="logo"><%= $logo %></div>
671
- <% end %>
672
-
673
- <% if $title %>
674
- <h1 class="title"><%= $title.to_s.to_inline_xhtml %></h1>
675
- <% end %>
676
-
677
- <% if $subtitle %>
678
- <h2 class="subtitle"><%= $subtitle.to_s.to_inline_xhtml %></h2>
679
- <% end %>
680
-
681
- <% if $authors %>
682
- <h3 class="authors"><%=
683
- $authors.map do |name, url|
684
- if url
685
- %{<a href="#{url}">#{name}</a>}
686
- else
687
- name
688
- end
689
- end.join(', ')
690
- %></h3>
691
- <% end %>
692
-
693
- <% if $date %>
694
- <h3 class="date"><%= $date %></h3>
695
- <% end %>
696
- <% end %>
697
- <%= node = @nodes_by_type['header_inside_below'].first and node.output %>
735
+ %= node = @nodes_by_type['header_inside_above'].first and node.output
736
+
737
+ % if header = @nodes_by_type['header'].first
738
+ <%= header.output %>
739
+ % else
740
+ % if $logo
741
+ <div class="logo"><%= $logo %></div>
742
+
743
+ % if $title
744
+ <h1 class="title"><%= $title.to_s.to_inline_xhtml %></h1>
745
+
746
+ % if $subtitle
747
+ <h2 class="subtitle"><%= $subtitle.to_s.to_inline_xhtml %></h2>
748
+
749
+ % if $authors
750
+ <h3 class="authors"><%=
751
+ $authors.map do |name, url|
752
+ if url
753
+ %{<a href="#{url}">#{name}</a>}
754
+ else
755
+ name
756
+ end
757
+ end.join(', ')
758
+ %></h3>
759
+
760
+ % if $date
761
+ <h3 class="date"><%= $date %></h3>
762
+
763
+ %= node = @nodes_by_type['header_inside_below'].first and node.output
698
764
  </div>
699
- <%= node = @nodes_by_type['header_outside_below'].first and node.output %>
700
765
 
701
- <%= abstract.output if abstract %>
766
+ %= node = @nodes_by_type['header_outside_below'].first and node.output
767
+
768
+
769
+ %= abstract.output if abstract
702
770
 
703
771
  <br style="display: none"/>
704
772
  <hr style="display: none"/>
705
773
  <br style="display: none"/>
706
774
 
707
- <% unless toc.empty? %>
775
+
776
+ % unless toc.empty?
708
777
  <div id="toc">
709
- <%= ERBook::Document::Node.navigation 'Contents', 'rev:Contents', nil, nil %>
778
+ <%= ERBook::Document::Node.navigation \
779
+ 'Contents', 'rev:Contents', nil, nil %>
710
780
  <h1 class="title"><%= ERBook::PHRASES['Contents'] %></h1>
711
- <ul>
712
- <%= toc %>
713
-
714
- <% if references %>
715
- <li><a id="rev:References" href="#References"><%= ERBook::PHRASES['References'] %></a></li>
716
- <% end %>
717
- </ul>
781
+ <ul><%= toc %></ul>
718
782
  </div>
719
- <% end %>
720
783
 
721
- <% unless lof.empty? %>
784
+ % unless lof.empty?
722
785
  <div id="lof"><%= lof %></div>
723
- <% end %>
724
786
 
725
787
  <br style="display: none"/>
726
788
  <hr style="display: none"/>
727
789
  <br style="display: none"/>
728
790
 
791
+
729
792
  <div id="content"><%= @content %></div>
730
793
 
731
- <% if references %>
732
- <div id="bib">
733
- <%= ERBook::Document::Node.navigation 'References', 'rev:References', nil, nil %>
734
- <h1 class="title"><%= ERBook::PHRASES['References'] %></h1>
735
- <ol>
736
- <% references.each do |n| %>
737
- <li id="<%= n.here_frag %>"><%= n.content_xhtml %></li>
738
- <% end %>
739
- </ol>
740
- </div>
741
- <% end %>
794
+ % if references
795
+ <div id="bib">
796
+ <%= ERBook::Document::Node.navigation \
797
+ 'References', 'rev:References', nil, nil %>
798
+ <h1 class="title"><%= ERBook::PHRASES['References'] %></h1>
799
+ <ol>
800
+ % references.each do |n|
801
+ <li id="<%= n.here_frag %>"><%= n.content_xhtml %></li>
802
+ </ol>
803
+ </div>
742
804
 
743
805
  <br style="display: none"/>
744
806
  <hr style="display: none"/>
745
807
  <br style="display: none"/>
746
808
 
747
- <%= node = @nodes_by_type['footer_outside_above'].first and node.output %>
748
- <div id="footer">
749
- <%= node = @nodes_by_type['footer_inside_above'].first and node.output %>
750
- <% if footer = @nodes_by_type['footer'].first %>
751
- <%= footer.content.to_s.to_xhtml %>
752
- <%
753
- else
754
- ERBook::PHRASES[
755
- 'Generated by %s on %s.',
756
- %{<a href="#{ERBook::WEBSITE}">#{ERBook::DISPLAY}</a>},
757
- Time.now
758
- ]
759
- end
760
- %>
761
-
762
- <div id="footer-credits">
763
- <%
764
- icon_credits = 'The icons shown above are part of %s, which is copyright %s and is distributed under %s.'
765
- %>
766
- <p>
767
- <% ICONS.select {|i| i.origin == 'tango' }.each do |icon| %>
768
- <%= icon.to_xhtml %>
769
- <% end %>
770
809
 
771
- <br/>
810
+ %= node = @nodes_by_type['footer_outside_above'].first and node.output
772
811
 
812
+ <div id="footer">
813
+ %= node = @nodes_by_type['footer_inside_above'].first and node.output
814
+ % if footer = @nodes_by_type['footer'].first
815
+ %= footer.content.to_s.to_xhtml
816
+ % else
773
817
  <%=
774
818
  ERBook::PHRASES[
775
- icon_credits,
819
+ 'Generated by %s on %s.',
820
+ %{<a href="#{ERBook::WEBSITE}">#{ERBook::DISPLAY}</a>},
821
+ Time.now
822
+ ]
823
+ %>
776
824
 
777
- '<a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a>',
825
+ <div id="footer-credits">
826
+ <%
827
+ icon_credits = 'The icons shown above are part of %s, which is copyright %s and is distributed under %s.'
828
+ %>
829
+ <p>
830
+ % ICONS.select {|i| i.origin == 'tango' }.each do |icon|
831
+ %= icon.to_xhtml
778
832
 
779
- '&copy; 2005 <a href="http://tango.freedesktop.org">Tango Desktop Project</a>',
833
+ <br/>
780
834
 
781
- '<a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License Agreement</a>'
782
- ]
783
- %>
784
- </p>
835
+ <%=
836
+ ERBook::PHRASES[
837
+ icon_credits,
785
838
 
786
- <p>
787
- <% ICONS.select {|i| i.origin == 'mediawiki' }.each do |icon| %>
788
- <%= icon.to_xhtml %>
789
- <% end %>
839
+ '<a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a>',
790
840
 
791
- <br/>
841
+ '&copy; 2005 <a href="http://tango.freedesktop.org">Tango Desktop Project</a>',
792
842
 
793
- <%=
794
- ERBook::PHRASES[
795
- icon_credits,
843
+ '<a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License Agreement</a>'
844
+ ]
845
+ %>
846
+ </p>
796
847
 
797
- '<a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>',
848
+ <p>
849
+ % ICONS.select {|i| i.origin == 'mediawiki' }.each do |icon|
850
+ %= icon.to_xhtml
798
851
 
799
- '&copy; 2007 <a href="https://www.ohloh.net/projects/mediawiki/contributors">MediaWiki contributors</a>',
852
+ <br/>
800
853
 
801
- '<a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2</a>'
802
- ]
803
- %>
804
- </p>
805
- </div>
806
- <%= node = @nodes_by_type['footer_inside_below'].first and node.output %>
854
+ <%=
855
+ ERBook::PHRASES[
856
+ icon_credits,
857
+
858
+ '<a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>',
859
+
860
+ '&copy; 2007 <a href="https://www.ohloh.net/projects/mediawiki/contributors">MediaWiki contributors</a>',
861
+
862
+ '<a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2</a>'
863
+ ]
864
+ %>
865
+ </p>
866
+
867
+ <p style="margin-top: 3em">
868
+ <a href="http://validator.w3.org/check?uri=referer"><img
869
+ src="http://www.w3.org/Icons/valid-xhtml10-blue"
870
+ alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
871
+
872
+ <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"><img
873
+ src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
874
+ alt="Valid CSS!" height="31" width="88" /></a>
875
+ </p>
876
+ </div>
877
+ %= node = @nodes_by_type['footer_inside_below'].first and node.output
807
878
  </div>
808
- <%= node = @nodes_by_type['footer_outside_below'].first and node.output %>
879
+
880
+ %= node = @nodes_by_type['footer_outside_below'].first and node.output
809
881
  </div>
810
882
  </body>
811
883
  </html>
@@ -834,10 +906,11 @@ styles:
834
906
  font-style : italic;
835
907
  }
836
908
 
837
- em
909
+ em,
910
+ strong,
911
+ dt
838
912
  {
839
913
  font-family : <%= @format['fonts']['serif'] %>;
840
- font-size : 105%;
841
914
  }
842
915
 
843
916
  hr
@@ -856,15 +929,23 @@ styles:
856
929
  font-size : 100%; /* appears like "size: small" otherwise */
857
930
  }
858
931
 
932
+ /* output of the syntax coloring library */
933
+ code.para
934
+ {
935
+ white-space : pre;
936
+ }
937
+
859
938
  /* hyperlinks */
860
939
  a > img
861
940
  {
862
941
  border : none;
863
942
  }
864
943
 
865
- a img
944
+ /* lists */
945
+ dt
866
946
  {
867
- _border : none; /* for IE6 */
947
+ margin-top : 1.5em;
948
+ font-weight : bolder;
868
949
  }
869
950
 
870
951
  /* headings */
@@ -946,7 +1027,6 @@ styles:
946
1027
  border : 1px solid #bbb;
947
1028
  vertical-align : top;
948
1029
  background-color : #FFFFFF;
949
- _background-color : #FFFFFF; /* for IE6 */
950
1030
  }
951
1031
 
952
1032
  th
@@ -960,6 +1040,25 @@ styles:
960
1040
  text-align : center;
961
1041
  }
962
1042
 
1043
+ #header > .title
1044
+ {
1045
+ font-size : 2.25em;
1046
+ }
1047
+
1048
+ #header > .subtitle
1049
+ {
1050
+ }
1051
+
1052
+ #header > .authors
1053
+ {
1054
+ margin-top : 1.625em;
1055
+ margin-bottom : -0.25em;
1056
+ }
1057
+
1058
+ #header > .date
1059
+ {
1060
+ }
1061
+
963
1062
  .logo,
964
1063
  .header_outside_above,
965
1064
  #header,
@@ -1001,7 +1100,6 @@ styles:
1001
1100
  {
1002
1101
  padding-bottom : 1em;
1003
1102
  border-left : thick solid #F5F5F5;
1004
- _border-left : none; /* for IE6 */
1005
1103
  }
1006
1104
 
1007
1105
  #toc li ul:hover
@@ -1046,14 +1144,6 @@ styles:
1046
1144
  margin-top : 0.25em;
1047
1145
  }
1048
1146
 
1049
- .part .title big,
1050
- .chapter .title big
1051
- {
1052
- _display : block; /* for IE6 */
1053
- _margin-top : 0.25em; /* for IE6 */
1054
- _margin-bottom : 0.75em; /* for IE6 */
1055
- }
1056
-
1057
1147
  .paragraph > .title,
1058
1148
  .tip > .title,
1059
1149
  .note > .title,
@@ -1070,23 +1160,6 @@ styles:
1070
1160
  margin-top : 2em;
1071
1161
  }
1072
1162
 
1073
- .paragraph .title,
1074
- .tip .title,
1075
- .note .title,
1076
- .caution .title,
1077
- .warning .title,
1078
- .important .title,
1079
- .figure .title,
1080
- .table .title,
1081
- .example .title,
1082
- .equation .title,
1083
- .procedure .title
1084
- {
1085
- _font-size : large; /* for IE6 */
1086
- _font-weight : bold; /* large is not bold in IE6 */
1087
- _margin-top : 2em; /* for IE6 */
1088
- }
1089
-
1090
1163
  .tip ,
1091
1164
  .note ,
1092
1165
  .caution ,
@@ -1112,7 +1185,7 @@ styles:
1112
1185
  .equation .nav,
1113
1186
  .procedure .nav
1114
1187
  {
1115
- margin-left : -7.65em;
1188
+ margin-right : -3em;
1116
1189
  }
1117
1190
 
1118
1191
  .tip > .content,
@@ -1139,46 +1212,24 @@ styles:
1139
1212
  margin : 0 1em 1em 0; /* top right bottom left */
1140
1213
  }
1141
1214
 
1142
- .tip .content .icon,
1143
- .note .content .icon,
1144
- .caution .content .icon,
1145
- .warning .content .icon,
1146
- .important .content .icon
1147
- {
1148
- _display : none; /* IE6 cannot display embedded images */
1149
- }
1150
-
1151
1215
  .figure > .title
1152
1216
  {
1153
1217
  text-align : center;
1154
1218
  }
1155
1219
 
1156
- .figure .title
1157
- {
1158
- _text-align : center; /* for IE6 */
1159
- }
1160
-
1161
1220
  .figure > .content img
1162
1221
  {
1163
1222
  display : block;
1164
1223
  margin : auto;
1165
1224
  }
1166
1225
 
1167
- .figure .content img
1168
- {
1169
- _display : block; /* for IE6 */
1170
- _margin : auto; /* for IE6 */
1171
- }
1172
-
1173
1226
  - screen: |
1174
1227
  /* general */
1175
1228
  body
1176
1229
  {
1177
1230
  margin : 0;
1178
- padding : 0;
1179
- padding-left : 10em; /* room for local navigation menus */
1180
- padding-right : 10em; /* keep #body visually centered */
1181
- background-color : #808080;
1231
+ padding : 0.5em;
1232
+ background-color : #FFFFFF;
1182
1233
  }
1183
1234
 
1184
1235
  /* the actual content of the <body> element */
@@ -1186,11 +1237,6 @@ styles:
1186
1237
  {
1187
1238
  margin : auto;
1188
1239
  max-width : 38em;
1189
-
1190
- background-color : #FFFFFF;
1191
- border-left : 0.35em solid #696969;
1192
- border-right : 0.35em solid #696969;
1193
- padding : 2em;
1194
1240
  }
1195
1241
 
1196
1242
  /* source code */
@@ -1199,7 +1245,8 @@ styles:
1199
1245
  background-color : #F0F8FF;
1200
1246
  }
1201
1247
 
1202
- pre
1248
+ pre,
1249
+ code.para
1203
1250
  {
1204
1251
  cursor : text;
1205
1252
  line-height : normal;
@@ -1214,7 +1261,8 @@ styles:
1214
1261
  }
1215
1262
 
1216
1263
  /* output of the syntax coloring library */
1217
- pre.code
1264
+ code.para,
1265
+ pre.para
1218
1266
  {
1219
1267
  background-color : #FFFFE8;
1220
1268
  border-color : #EEDD88;
@@ -1241,65 +1289,39 @@ styles:
1241
1289
  color : #800080;
1242
1290
  }
1243
1291
 
1244
- #toc a:target:after,
1245
- #lof a:target:after,
1246
- #nav a:target:after
1292
+ #toc a:target,
1293
+ #lof a:target,
1294
+ #nav a:target
1247
1295
  {
1248
- content : "★"; /* &#x2605; */
1249
- color : #FF0000;
1250
- font-size : x-large;
1251
- padding-left : 0.125em;
1296
+ background : <%= ICON_BY_NAME['here_frag'].data_css %>;
1297
+ background-position : center right;
1298
+ background-repeat : no-repeat;
1299
+ padding-right : 20px;
1252
1300
  }
1253
1301
 
1254
1302
  /* document structure */
1255
1303
  /* mini navigation menu beside every block node */
1256
1304
  .nav
1257
1305
  {
1258
- width : 4em;
1259
- float : left; /* detach from main content */
1260
- margin-left : -6.075em;
1261
-
1262
- font-size : 1.9em;
1263
- letter-spacing : 0.25em;
1264
- text-align : center;
1265
-
1266
- color : #696969; /* same colors to hide non-links */
1267
- background-color : #696969;
1268
- padding : 0.5em;
1269
- margin-top : -0.5em;
1306
+ float : right;
1307
+ margin-top : -0.25em;
1270
1308
  }
1271
1309
 
1272
- .nav:target,
1273
- .nav:hover
1310
+ .nav > a > img
1274
1311
  {
1275
- color : #333; /* same colors to hide non-links */
1276
- background-color : #333;
1312
+ border-top : thick solid #FFFFFF;
1277
1313
  }
1278
1314
 
1279
- .nav a:link,
1280
- .nav a:visited
1315
+ .nav > a > img:hover
1281
1316
  {
1282
- color : #C0C0C0;
1283
- }
1284
-
1285
- .nav a:hover,
1286
- #nav a:target:after {
1287
- color : #9ACD32;
1288
- text-decoration : none;
1317
+ border-top : thick solid #FA8072;
1289
1318
  }
1290
1319
 
1291
1320
  /* global navigation menu at the top of the page */
1292
1321
  #nav
1293
1322
  {
1294
- font-size : 1em;
1295
- letter-spacing : 0;
1296
- width : 8.5em;
1297
- margin-left : -11.5em;
1298
- }
1299
-
1300
- #nav li
1301
- {
1302
- list-style-type : none;
1323
+ margin-bottom : 4em;
1324
+ text-align : center;
1303
1325
  }
1304
1326
 
1305
1327
  - print: |
@@ -1387,9 +1409,3 @@ styles:
1387
1409
  {
1388
1410
  padding-bottom : 0.5em;
1389
1411
  }
1390
-
1391
- .part .title big,
1392
- .chapter .title big
1393
- {
1394
- _padding-bottom : 0.5em; /* for IE6 */
1395
- }