kanpachi 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/bower.json +1 -0
  4. data/kanpachi.gemspec +1 -1
  5. data/lib/kanpachi/doc/template/components/bootstrap/.bower.json +34 -0
  6. data/lib/kanpachi/doc/template/components/bootstrap/Gruntfile.js +421 -0
  7. data/lib/kanpachi/doc/template/components/bootstrap/LICENSE +21 -0
  8. data/lib/kanpachi/doc/template/components/bootstrap/README.md +173 -0
  9. data/lib/kanpachi/doc/template/components/bootstrap/bower.json +24 -0
  10. data/lib/kanpachi/doc/template/{source/stylesheets → components/bootstrap/dist/css}/bootstrap-theme.css +0 -0
  11. data/lib/kanpachi/doc/template/{source/stylesheets → components/bootstrap/dist/css}/bootstrap-theme.css.map +0 -0
  12. data/lib/kanpachi/doc/template/{source/stylesheets → components/bootstrap/dist/css}/bootstrap-theme.min.css +0 -0
  13. data/lib/kanpachi/doc/template/{source/stylesheets → components/bootstrap/dist/css}/bootstrap.css +0 -0
  14. data/lib/kanpachi/doc/template/{source/stylesheets → components/bootstrap/dist/css}/bootstrap.css.map +0 -0
  15. data/lib/kanpachi/doc/template/{source/stylesheets → components/bootstrap/dist/css}/bootstrap.min.css +0 -0
  16. data/lib/kanpachi/doc/template/components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  17. data/lib/kanpachi/doc/template/components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +229 -0
  18. data/lib/kanpachi/doc/template/components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  19. data/lib/kanpachi/doc/template/components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  20. data/lib/kanpachi/doc/template/{source/javascripts → components/bootstrap/dist/js}/bootstrap.js +0 -0
  21. data/lib/kanpachi/doc/template/{source/javascripts → components/bootstrap/dist/js}/bootstrap.min.js +0 -0
  22. data/lib/kanpachi/doc/template/components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  23. data/lib/kanpachi/doc/template/components/bootstrap/fonts/glyphicons-halflings-regular.svg +229 -0
  24. data/lib/kanpachi/doc/template/components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  25. data/lib/kanpachi/doc/template/components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  26. data/lib/kanpachi/doc/template/components/bootstrap/grunt/bs-glyphicons-data-generator.js +34 -0
  27. data/lib/kanpachi/doc/template/components/bootstrap/grunt/bs-lessdoc-parser.js +236 -0
  28. data/lib/kanpachi/doc/template/components/bootstrap/grunt/bs-raw-files-generator.js +31 -0
  29. data/lib/kanpachi/doc/template/components/bootstrap/grunt/shrinkwrap.js +28 -0
  30. data/lib/kanpachi/doc/template/components/bootstrap/js/affix.js +137 -0
  31. data/lib/kanpachi/doc/template/components/bootstrap/js/alert.js +88 -0
  32. data/lib/kanpachi/doc/template/components/bootstrap/js/button.js +107 -0
  33. data/lib/kanpachi/doc/template/components/bootstrap/js/carousel.js +205 -0
  34. data/lib/kanpachi/doc/template/components/bootstrap/js/collapse.js +170 -0
  35. data/lib/kanpachi/doc/template/components/bootstrap/js/dropdown.js +147 -0
  36. data/lib/kanpachi/doc/template/components/bootstrap/js/modal.js +243 -0
  37. data/lib/kanpachi/doc/template/components/bootstrap/js/popover.js +110 -0
  38. data/lib/kanpachi/doc/template/components/bootstrap/js/scrollspy.js +153 -0
  39. data/lib/kanpachi/doc/template/components/bootstrap/js/tab.js +125 -0
  40. data/lib/kanpachi/doc/template/components/bootstrap/js/tooltip.js +399 -0
  41. data/lib/kanpachi/doc/template/components/bootstrap/js/transition.js +48 -0
  42. data/lib/kanpachi/doc/template/components/bootstrap/less/alerts.less +67 -0
  43. data/lib/kanpachi/doc/template/components/bootstrap/less/badges.less +55 -0
  44. data/lib/kanpachi/doc/template/components/bootstrap/less/bootstrap.less +49 -0
  45. data/lib/kanpachi/doc/template/components/bootstrap/less/breadcrumbs.less +26 -0
  46. data/lib/kanpachi/doc/template/components/bootstrap/less/button-groups.less +226 -0
  47. data/lib/kanpachi/doc/template/components/bootstrap/less/buttons.less +159 -0
  48. data/lib/kanpachi/doc/template/components/bootstrap/less/carousel.less +232 -0
  49. data/lib/kanpachi/doc/template/components/bootstrap/less/close.less +33 -0
  50. data/lib/kanpachi/doc/template/components/bootstrap/less/code.less +63 -0
  51. data/lib/kanpachi/doc/template/components/bootstrap/less/component-animations.less +29 -0
  52. data/lib/kanpachi/doc/template/components/bootstrap/less/dropdowns.less +213 -0
  53. data/lib/kanpachi/doc/template/components/bootstrap/less/forms.less +438 -0
  54. data/lib/kanpachi/doc/template/components/bootstrap/less/glyphicons.less +233 -0
  55. data/lib/kanpachi/doc/template/components/bootstrap/less/grid.less +84 -0
  56. data/lib/kanpachi/doc/template/components/bootstrap/less/input-groups.less +162 -0
  57. data/lib/kanpachi/doc/template/components/bootstrap/less/jumbotron.less +44 -0
  58. data/lib/kanpachi/doc/template/components/bootstrap/less/labels.less +64 -0
  59. data/lib/kanpachi/doc/template/components/bootstrap/less/list-group.less +110 -0
  60. data/lib/kanpachi/doc/template/components/bootstrap/less/media.less +56 -0
  61. data/lib/kanpachi/doc/template/components/bootstrap/less/mixins.less +929 -0
  62. data/lib/kanpachi/doc/template/components/bootstrap/less/modals.less +139 -0
  63. data/lib/kanpachi/doc/template/components/bootstrap/less/navbar.less +616 -0
  64. data/lib/kanpachi/doc/template/components/bootstrap/less/navs.less +242 -0
  65. data/lib/kanpachi/doc/template/components/bootstrap/less/normalize.less +423 -0
  66. data/lib/kanpachi/doc/template/components/bootstrap/less/pager.less +55 -0
  67. data/lib/kanpachi/doc/template/components/bootstrap/less/pagination.less +88 -0
  68. data/lib/kanpachi/doc/template/components/bootstrap/less/panels.less +241 -0
  69. data/lib/kanpachi/doc/template/components/bootstrap/less/popovers.less +133 -0
  70. data/lib/kanpachi/doc/template/components/bootstrap/less/print.less +101 -0
  71. data/lib/kanpachi/doc/template/components/bootstrap/less/progress-bars.less +80 -0
  72. data/lib/kanpachi/doc/template/components/bootstrap/less/responsive-utilities.less +92 -0
  73. data/lib/kanpachi/doc/template/components/bootstrap/less/scaffolding.less +134 -0
  74. data/lib/kanpachi/doc/template/components/bootstrap/less/tables.less +233 -0
  75. data/lib/kanpachi/doc/template/components/bootstrap/less/theme.less +247 -0
  76. data/lib/kanpachi/doc/template/components/bootstrap/less/thumbnails.less +36 -0
  77. data/lib/kanpachi/doc/template/components/bootstrap/less/tooltip.less +95 -0
  78. data/lib/kanpachi/doc/template/components/bootstrap/less/type.less +293 -0
  79. data/lib/kanpachi/doc/template/components/bootstrap/less/utilities.less +56 -0
  80. data/lib/kanpachi/doc/template/components/bootstrap/less/variables.less +829 -0
  81. data/lib/kanpachi/doc/template/components/bootstrap/less/wells.less +29 -0
  82. data/lib/kanpachi/doc/template/components/bootstrap/package.json +70 -0
  83. data/lib/kanpachi/doc/template/components/bootstrap/test-infra/README.md +100 -0
  84. data/lib/kanpachi/doc/template/components/bootstrap/test-infra/npm-shrinkwrap.canonical.json +1 -0
  85. data/lib/kanpachi/doc/template/components/bootstrap/test-infra/requirements.txt +1 -0
  86. data/lib/kanpachi/doc/template/components/bootstrap/test-infra/s3_cache.py +107 -0
  87. data/lib/kanpachi/doc/template/components/bootstrap/test-infra/sauce_browsers.yml +83 -0
  88. data/lib/kanpachi/doc/template/components/bootstrap/test-infra/uncached-npm-install.sh +4 -0
  89. data/lib/kanpachi/doc/template/components/html5shiv/.bower.json +6 -7
  90. data/lib/kanpachi/doc/template/components/html5shiv/Gruntfile.js +61 -0
  91. data/lib/kanpachi/doc/template/components/html5shiv/bower.json +15 -0
  92. data/lib/kanpachi/doc/template/components/html5shiv/dist/html5shiv-printshiv.js +498 -10
  93. data/lib/kanpachi/doc/template/components/html5shiv/dist/html5shiv-printshiv.min.js +4 -0
  94. data/lib/kanpachi/doc/template/components/html5shiv/dist/html5shiv.js +300 -7
  95. data/lib/kanpachi/doc/template/components/html5shiv/dist/html5shiv.min.js +4 -0
  96. data/lib/kanpachi/doc/template/components/html5shiv/package.json +16 -0
  97. data/lib/kanpachi/doc/template/components/html5shiv/readme.md +3 -3
  98. data/lib/kanpachi/doc/template/source/javascripts/all.coffee +1 -1
  99. data/lib/kanpachi/doc/template/source/layouts/layout.slim +1 -1
  100. data/lib/kanpachi/response.rb +13 -5
  101. data/lib/kanpachi/version.rb +1 -1
  102. metadata +93 -12
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "html5shiv",
3
+ "version": "3.7.0",
4
+ "main": [
5
+ "dist/html5shiv.js"
6
+ ],
7
+ "ignore": [
8
+ "**/.*",
9
+ "composer.json",
10
+ "test",
11
+ "build",
12
+ "src",
13
+ "build.xml"
14
+ ]
15
+ }
@@ -1,11 +1,499 @@
1
- /*
2
- HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
1
+ /**
2
+ * @preserve HTML5 Shiv 3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
3
3
  */
4
- (function(j,f){function s(a,b){var c=a.createElement("p"),m=a.getElementsByTagName("head")[0]||a.documentElement;c.innerHTML="x<style>"+b+"</style>";return m.insertBefore(c.lastChild,m.firstChild)}function o(){var a=d.elements;return"string"==typeof a?a.split(" "):a}function n(a){var b=t[a[u]];b||(b={},p++,a[u]=p,t[p]=b);return b}function v(a,b,c){b||(b=f);if(e)return b.createElement(a);c||(c=n(b));b=c.cache[a]?c.cache[a].cloneNode():y.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);
5
- return b.canHaveChildren&&!z.test(a)?c.frag.appendChild(b):b}function A(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();a.createElement=function(c){return!d.shivMethods?b.createElem(c):v(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+o().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(d,b.frag)}
6
- function w(a){a||(a=f);var b=n(a);if(d.shivCSS&&!q&&!b.hasCSS)b.hasCSS=!!s(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}");e||A(a,b);return a}function B(a){for(var b,c=a.attributes,m=c.length,f=a.ownerDocument.createElement(l+":"+a.nodeName);m--;)b=c[m],b.specified&&f.setAttribute(b.nodeName,b.nodeValue);f.style.cssText=a.style.cssText;return f}function x(a){function b(){clearTimeout(d._removeSheetTimer);
7
- c&&c.removeNode(!0);c=null}var c,f,d=n(a),e=a.namespaces,j=a.parentWindow;if(!C||a.printShived)return a;"undefined"==typeof e[l]&&e.add(l);j.attachEvent("onbeforeprint",function(){b();var g,i,d;d=a.styleSheets;for(var e=[],h=d.length,k=Array(h);h--;)k[h]=d[h];for(;d=k.pop();)if(!d.disabled&&D.test(d.media)){try{g=d.imports,i=g.length}catch(j){i=0}for(h=0;h<i;h++)k.push(g[h]);try{e.push(d.cssText)}catch(n){}}g=e.reverse().join("").split("{");i=g.length;h=RegExp("(^|[\\s,>+~])("+o().join("|")+")(?=[[\\s,>+~#.:]|$)",
8
- "gi");for(k="$1"+l+"\\:$2";i--;)e=g[i]=g[i].split("}"),e[e.length-1]=e[e.length-1].replace(h,k),g[i]=e.join("}");e=g.join("{");i=a.getElementsByTagName("*");h=i.length;k=RegExp("^(?:"+o().join("|")+")$","i");for(d=[];h--;)g=i[h],k.test(g.nodeName)&&d.push(g.applyElement(B(g)));f=d;c=s(a,e)});j.attachEvent("onafterprint",function(){for(var a=f,c=a.length;c--;)a[c].removeNode();clearTimeout(d._removeSheetTimer);d._removeSheetTimer=setTimeout(b,500)});a.printShived=!0;return a}var r=j.html5||{},z=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
9
- y=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q,u="_html5shiv",p=0,t={},e;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";q="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}e=b}catch(d){e=q=!0}})();var d={elements:r.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",
10
- version:"3.7.0",shivCSS:!1!==r.shivCSS,supportsUnknownElements:e,shivMethods:!1!==r.shivMethods,type:"default",shivDocument:w,createElement:v,createDocumentFragment:function(a,b){a||(a=f);if(e)return a.createDocumentFragment();for(var b=b||n(a),c=b.frag.cloneNode(),d=0,j=o(),l=j.length;d<l;d++)c.createElement(j[d]);return c}};j.html5=d;w(f);var D=/^$|\b(?:all|print)\b/,l="html5shiv",C=!e&&function(){var a=f.documentElement;return!("undefined"==typeof f.namespaces||"undefined"==typeof f.parentWindow||
11
- "undefined"==typeof a.applyElement||"undefined"==typeof a.removeNode||"undefined"==typeof j.attachEvent)}();d.type+=" print";d.shivPrint=x;x(f)})(this,document);
4
+ ;(function(window, document) {
5
+ /*jshint evil:true */
6
+ /** version */
7
+ var version = '3.7.1';
8
+
9
+ /** Preset options */
10
+ var options = window.html5 || {};
11
+
12
+ /** Used to skip problem elements */
13
+ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
14
+
15
+ /** Not all elements can be cloned in IE **/
16
+ var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
17
+
18
+ /** Detect whether the browser supports default html5 styles */
19
+ var supportsHtml5Styles;
20
+
21
+ /** Name of the expando, to work with multiple documents or to re-shiv one document */
22
+ var expando = '_html5shiv';
23
+
24
+ /** The id for the the documents expando */
25
+ var expanID = 0;
26
+
27
+ /** Cached data for each document */
28
+ var expandoData = {};
29
+
30
+ /** Detect whether the browser supports unknown elements */
31
+ var supportsUnknownElements;
32
+
33
+ (function() {
34
+ try {
35
+ var a = document.createElement('a');
36
+ a.innerHTML = '<xyz></xyz>';
37
+ //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
38
+ supportsHtml5Styles = ('hidden' in a);
39
+
40
+ supportsUnknownElements = a.childNodes.length == 1 || (function() {
41
+ // assign a false positive if unable to shiv
42
+ (document.createElement)('a');
43
+ var frag = document.createDocumentFragment();
44
+ return (
45
+ typeof frag.cloneNode == 'undefined' ||
46
+ typeof frag.createDocumentFragment == 'undefined' ||
47
+ typeof frag.createElement == 'undefined'
48
+ );
49
+ }());
50
+ } catch(e) {
51
+ // assign a false positive if detection fails => unable to shiv
52
+ supportsHtml5Styles = true;
53
+ supportsUnknownElements = true;
54
+ }
55
+
56
+ }());
57
+
58
+ /*--------------------------------------------------------------------------*/
59
+
60
+ /**
61
+ * Creates a style sheet with the given CSS text and adds it to the document.
62
+ * @private
63
+ * @param {Document} ownerDocument The document.
64
+ * @param {String} cssText The CSS text.
65
+ * @returns {StyleSheet} The style element.
66
+ */
67
+ function addStyleSheet(ownerDocument, cssText) {
68
+ var p = ownerDocument.createElement('p'),
69
+ parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
70
+
71
+ p.innerHTML = 'x<style>' + cssText + '</style>';
72
+ return parent.insertBefore(p.lastChild, parent.firstChild);
73
+ }
74
+
75
+ /**
76
+ * Returns the value of `html5.elements` as an array.
77
+ * @private
78
+ * @returns {Array} An array of shived element node names.
79
+ */
80
+ function getElements() {
81
+ var elements = html5.elements;
82
+ return typeof elements == 'string' ? elements.split(' ') : elements;
83
+ }
84
+
85
+ /**
86
+ * Returns the data associated to the given document
87
+ * @private
88
+ * @param {Document} ownerDocument The document.
89
+ * @returns {Object} An object of data.
90
+ */
91
+ function getExpandoData(ownerDocument) {
92
+ var data = expandoData[ownerDocument[expando]];
93
+ if (!data) {
94
+ data = {};
95
+ expanID++;
96
+ ownerDocument[expando] = expanID;
97
+ expandoData[expanID] = data;
98
+ }
99
+ return data;
100
+ }
101
+
102
+ /**
103
+ * returns a shived element for the given nodeName and document
104
+ * @memberOf html5
105
+ * @param {String} nodeName name of the element
106
+ * @param {Document} ownerDocument The context document.
107
+ * @returns {Object} The shived element.
108
+ */
109
+ function createElement(nodeName, ownerDocument, data){
110
+ if (!ownerDocument) {
111
+ ownerDocument = document;
112
+ }
113
+ if(supportsUnknownElements){
114
+ return ownerDocument.createElement(nodeName);
115
+ }
116
+ if (!data) {
117
+ data = getExpandoData(ownerDocument);
118
+ }
119
+ var node;
120
+
121
+ if (data.cache[nodeName]) {
122
+ node = data.cache[nodeName].cloneNode();
123
+ } else if (saveClones.test(nodeName)) {
124
+ node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
125
+ } else {
126
+ node = data.createElem(nodeName);
127
+ }
128
+
129
+ // Avoid adding some elements to fragments in IE < 9 because
130
+ // * Attributes like `name` or `type` cannot be set/changed once an element
131
+ // is inserted into a document/fragment
132
+ // * Link elements with `src` attributes that are inaccessible, as with
133
+ // a 403 response, will cause the tab/window to crash
134
+ // * Script elements appended to fragments will execute when their `src`
135
+ // or `text` property is set
136
+ return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
137
+ }
138
+
139
+ /**
140
+ * returns a shived DocumentFragment for the given document
141
+ * @memberOf html5
142
+ * @param {Document} ownerDocument The context document.
143
+ * @returns {Object} The shived DocumentFragment.
144
+ */
145
+ function createDocumentFragment(ownerDocument, data){
146
+ if (!ownerDocument) {
147
+ ownerDocument = document;
148
+ }
149
+ if(supportsUnknownElements){
150
+ return ownerDocument.createDocumentFragment();
151
+ }
152
+ data = data || getExpandoData(ownerDocument);
153
+ var clone = data.frag.cloneNode(),
154
+ i = 0,
155
+ elems = getElements(),
156
+ l = elems.length;
157
+ for(;i<l;i++){
158
+ clone.createElement(elems[i]);
159
+ }
160
+ return clone;
161
+ }
162
+
163
+ /**
164
+ * Shivs the `createElement` and `createDocumentFragment` methods of the document.
165
+ * @private
166
+ * @param {Document|DocumentFragment} ownerDocument The document.
167
+ * @param {Object} data of the document.
168
+ */
169
+ function shivMethods(ownerDocument, data) {
170
+ if (!data.cache) {
171
+ data.cache = {};
172
+ data.createElem = ownerDocument.createElement;
173
+ data.createFrag = ownerDocument.createDocumentFragment;
174
+ data.frag = data.createFrag();
175
+ }
176
+
177
+
178
+ ownerDocument.createElement = function(nodeName) {
179
+ //abort shiv
180
+ if (!html5.shivMethods) {
181
+ return data.createElem(nodeName);
182
+ }
183
+ return createElement(nodeName, ownerDocument, data);
184
+ };
185
+
186
+ ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
187
+ 'var n=f.cloneNode(),c=n.createElement;' +
188
+ 'h.shivMethods&&(' +
189
+ // unroll the `createElement` calls
190
+ getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
191
+ data.createElem(nodeName);
192
+ data.frag.createElement(nodeName);
193
+ return 'c("' + nodeName + '")';
194
+ }) +
195
+ ');return n}'
196
+ )(html5, data.frag);
197
+ }
198
+
199
+ /*--------------------------------------------------------------------------*/
200
+
201
+ /**
202
+ * Shivs the given document.
203
+ * @memberOf html5
204
+ * @param {Document} ownerDocument The document to shiv.
205
+ * @returns {Document} The shived document.
206
+ */
207
+ function shivDocument(ownerDocument) {
208
+ if (!ownerDocument) {
209
+ ownerDocument = document;
210
+ }
211
+ var data = getExpandoData(ownerDocument);
212
+
213
+ if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
214
+ data.hasCSS = !!addStyleSheet(ownerDocument,
215
+ // corrects block display not defined in IE6/7/8/9
216
+ 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
217
+ // adds styling not present in IE6/7/8/9
218
+ 'mark{background:#FF0;color:#000}' +
219
+ // hides non-rendered elements
220
+ 'template{display:none}'
221
+ );
222
+ }
223
+ if (!supportsUnknownElements) {
224
+ shivMethods(ownerDocument, data);
225
+ }
226
+ return ownerDocument;
227
+ }
228
+
229
+ /*--------------------------------------------------------------------------*/
230
+
231
+ /**
232
+ * The `html5` object is exposed so that more elements can be shived and
233
+ * existing shiving can be detected on iframes.
234
+ * @type Object
235
+ * @example
236
+ *
237
+ * // options can be changed before the script is included
238
+ * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
239
+ */
240
+ var html5 = {
241
+
242
+ /**
243
+ * An array or space separated string of node names of the elements to shiv.
244
+ * @memberOf html5
245
+ * @type Array|String
246
+ */
247
+ 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
248
+
249
+ /**
250
+ * current version of html5shiv
251
+ */
252
+ 'version': version,
253
+
254
+ /**
255
+ * A flag to indicate that the HTML5 style sheet should be inserted.
256
+ * @memberOf html5
257
+ * @type Boolean
258
+ */
259
+ 'shivCSS': (options.shivCSS !== false),
260
+
261
+ /**
262
+ * Is equal to true if a browser supports creating unknown/HTML5 elements
263
+ * @memberOf html5
264
+ * @type boolean
265
+ */
266
+ 'supportsUnknownElements': supportsUnknownElements,
267
+
268
+ /**
269
+ * A flag to indicate that the document's `createElement` and `createDocumentFragment`
270
+ * methods should be overwritten.
271
+ * @memberOf html5
272
+ * @type Boolean
273
+ */
274
+ 'shivMethods': (options.shivMethods !== false),
275
+
276
+ /**
277
+ * A string to describe the type of `html5` object ("default" or "default print").
278
+ * @memberOf html5
279
+ * @type String
280
+ */
281
+ 'type': 'default',
282
+
283
+ // shivs the document according to the specified `html5` object options
284
+ 'shivDocument': shivDocument,
285
+
286
+ //creates a shived element
287
+ createElement: createElement,
288
+
289
+ //creates a shived documentFragment
290
+ createDocumentFragment: createDocumentFragment
291
+ };
292
+
293
+ /*--------------------------------------------------------------------------*/
294
+
295
+ // expose html5
296
+ window.html5 = html5;
297
+
298
+ // shiv the document
299
+ shivDocument(document);
300
+
301
+ /*------------------------------- Print Shiv -------------------------------*/
302
+
303
+ /** Used to filter media types */
304
+ var reMedia = /^$|\b(?:all|print)\b/;
305
+
306
+ /** Used to namespace printable elements */
307
+ var shivNamespace = 'html5shiv';
308
+
309
+ /** Detect whether the browser supports shivable style sheets */
310
+ var supportsShivableSheets = !supportsUnknownElements && (function() {
311
+ // assign a false negative if unable to shiv
312
+ var docEl = document.documentElement;
313
+ return !(
314
+ typeof document.namespaces == 'undefined' ||
315
+ typeof document.parentWindow == 'undefined' ||
316
+ typeof docEl.applyElement == 'undefined' ||
317
+ typeof docEl.removeNode == 'undefined' ||
318
+ typeof window.attachEvent == 'undefined'
319
+ );
320
+ }());
321
+
322
+ /*--------------------------------------------------------------------------*/
323
+
324
+ /**
325
+ * Wraps all HTML5 elements in the given document with printable elements.
326
+ * (eg. the "header" element is wrapped with the "html5shiv:header" element)
327
+ * @private
328
+ * @param {Document} ownerDocument The document.
329
+ * @returns {Array} An array wrappers added.
330
+ */
331
+ function addWrappers(ownerDocument) {
332
+ var node,
333
+ nodes = ownerDocument.getElementsByTagName('*'),
334
+ index = nodes.length,
335
+ reElements = RegExp('^(?:' + getElements().join('|') + ')$', 'i'),
336
+ result = [];
337
+
338
+ while (index--) {
339
+ node = nodes[index];
340
+ if (reElements.test(node.nodeName)) {
341
+ result.push(node.applyElement(createWrapper(node)));
342
+ }
343
+ }
344
+ return result;
345
+ }
346
+
347
+ /**
348
+ * Creates a printable wrapper for the given element.
349
+ * @private
350
+ * @param {Element} element The element.
351
+ * @returns {Element} The wrapper.
352
+ */
353
+ function createWrapper(element) {
354
+ var node,
355
+ nodes = element.attributes,
356
+ index = nodes.length,
357
+ wrapper = element.ownerDocument.createElement(shivNamespace + ':' + element.nodeName);
358
+
359
+ // copy element attributes to the wrapper
360
+ while (index--) {
361
+ node = nodes[index];
362
+ node.specified && wrapper.setAttribute(node.nodeName, node.nodeValue);
363
+ }
364
+ // copy element styles to the wrapper
365
+ wrapper.style.cssText = element.style.cssText;
366
+ return wrapper;
367
+ }
368
+
369
+ /**
370
+ * Shivs the given CSS text.
371
+ * (eg. header{} becomes html5shiv\:header{})
372
+ * @private
373
+ * @param {String} cssText The CSS text to shiv.
374
+ * @returns {String} The shived CSS text.
375
+ */
376
+ function shivCssText(cssText) {
377
+ var pair,
378
+ parts = cssText.split('{'),
379
+ index = parts.length,
380
+ reElements = RegExp('(^|[\\s,>+~])(' + getElements().join('|') + ')(?=[[\\s,>+~#.:]|$)', 'gi'),
381
+ replacement = '$1' + shivNamespace + '\\:$2';
382
+
383
+ while (index--) {
384
+ pair = parts[index] = parts[index].split('}');
385
+ pair[pair.length - 1] = pair[pair.length - 1].replace(reElements, replacement);
386
+ parts[index] = pair.join('}');
387
+ }
388
+ return parts.join('{');
389
+ }
390
+
391
+ /**
392
+ * Removes the given wrappers, leaving the original elements.
393
+ * @private
394
+ * @params {Array} wrappers An array of printable wrappers.
395
+ */
396
+ function removeWrappers(wrappers) {
397
+ var index = wrappers.length;
398
+ while (index--) {
399
+ wrappers[index].removeNode();
400
+ }
401
+ }
402
+
403
+ /*--------------------------------------------------------------------------*/
404
+
405
+ /**
406
+ * Shivs the given document for print.
407
+ * @memberOf html5
408
+ * @param {Document} ownerDocument The document to shiv.
409
+ * @returns {Document} The shived document.
410
+ */
411
+ function shivPrint(ownerDocument) {
412
+ var shivedSheet,
413
+ wrappers,
414
+ data = getExpandoData(ownerDocument),
415
+ namespaces = ownerDocument.namespaces,
416
+ ownerWindow = ownerDocument.parentWindow;
417
+
418
+ if (!supportsShivableSheets || ownerDocument.printShived) {
419
+ return ownerDocument;
420
+ }
421
+ if (typeof namespaces[shivNamespace] == 'undefined') {
422
+ namespaces.add(shivNamespace);
423
+ }
424
+
425
+ function removeSheet() {
426
+ clearTimeout(data._removeSheetTimer);
427
+ if (shivedSheet) {
428
+ shivedSheet.removeNode(true);
429
+ }
430
+ shivedSheet= null;
431
+ }
432
+
433
+ ownerWindow.attachEvent('onbeforeprint', function() {
434
+
435
+ removeSheet();
436
+
437
+ var imports,
438
+ length,
439
+ sheet,
440
+ collection = ownerDocument.styleSheets,
441
+ cssText = [],
442
+ index = collection.length,
443
+ sheets = Array(index);
444
+
445
+ // convert styleSheets collection to an array
446
+ while (index--) {
447
+ sheets[index] = collection[index];
448
+ }
449
+ // concat all style sheet CSS text
450
+ while ((sheet = sheets.pop())) {
451
+ // IE does not enforce a same origin policy for external style sheets...
452
+ // but has trouble with some dynamically created stylesheets
453
+ if (!sheet.disabled && reMedia.test(sheet.media)) {
454
+
455
+ try {
456
+ imports = sheet.imports;
457
+ length = imports.length;
458
+ } catch(er){
459
+ length = 0;
460
+ }
461
+
462
+ for (index = 0; index < length; index++) {
463
+ sheets.push(imports[index]);
464
+ }
465
+
466
+ try {
467
+ cssText.push(sheet.cssText);
468
+ } catch(er){}
469
+ }
470
+ }
471
+
472
+ // wrap all HTML5 elements with printable elements and add the shived style sheet
473
+ cssText = shivCssText(cssText.reverse().join(''));
474
+ wrappers = addWrappers(ownerDocument);
475
+ shivedSheet = addStyleSheet(ownerDocument, cssText);
476
+
477
+ });
478
+
479
+ ownerWindow.attachEvent('onafterprint', function() {
480
+ // remove wrappers, leaving the original elements, and remove the shived style sheet
481
+ removeWrappers(wrappers);
482
+ clearTimeout(data._removeSheetTimer);
483
+ data._removeSheetTimer = setTimeout(removeSheet, 500);
484
+ });
485
+
486
+ ownerDocument.printShived = true;
487
+ return ownerDocument;
488
+ }
489
+
490
+ /*--------------------------------------------------------------------------*/
491
+
492
+ // expose API
493
+ html5.type += ' print';
494
+ html5.shivPrint = shivPrint;
495
+
496
+ // shiv for print
497
+ shivPrint(document);
498
+
499
+ }(this, document));