diff --git a/InstallPackages/html5shiv_3.7.2.zip b/InstallPackages/html5shiv_3.7.2.zip
new file mode 100644
index 00000000..2bdfc63d
Binary files /dev/null and b/InstallPackages/html5shiv_3.7.2.zip differ
diff --git a/html5shiv/html5shiv_3.7.2/CHANGES.htm b/html5shiv/html5shiv_3.7.2/CHANGES.htm
new file mode 100644
index 00000000..3dd977eb
--- /dev/null
+++ b/html5shiv/html5shiv_3.7.2/CHANGES.htm
@@ -0,0 +1,67 @@
+
+
+ v 3.3
+
+
complete refactoring by jdalton
+
+
+ - huge performance improvement on createElement (more than 10 times faster compared to 3.2)
+ - improved inline documentation
+
+ v 3.1/3.2
+
+
+ - fixed issue with vml elements
+ - small performance improvement for createElement (1.6 times faster compared to 3.0)
+
+ v 3.0
+
+
Complete rewrite by jonathantneal
+
+
+ - print iframe fix
+ - includes normalized styles for unknown elements
+ - fixes createElement/createDocumentFragement for unknown elements
+
+ As of April 18th, 2011, html5shim, html5shiv, modernizr all have been updated to use iepp v2.
+
+
+ v2 changelog
+
+
here is the list of fixed issues and made changes. I have also added a list of known issues (The first one is really critical, but needs a lot work...).
+
+
+ Fixes:
+
+
+ - print error on second print/print preview
+ - allow styling through body id (i.e.:
body#some-id article
)
+ - wrong selector parsing in IE8 (subbug:
@media print { }
blocks in media=all
stylesheets are ignored, but fixed a lot more than just that)
+ - alternate/disabled stylesheets aren't parsed (can solve problems with mediaqueries polyfills/styleswitchers)
+ - styles with multiple media declaration or mediaqueries (i.e.:
media="screen, projection"
, media="only screen..."
) are not used as print styles (unless, they have print or all medium) (this also fixes a lot of slowness and crashes)
+ - reset default media type to
"all"
, with every new stylesheet (fixes errors, if a stylesheet had no media attribute, but the previous had a non-print media-attribute)
+
+ Features:
+
+
+ Configuration:
+
+
+ - iepp.html5elements: override shimed html5elements (developer can add additional html5elements or reduce the elements)
+ - iepp.disablePP: disables print protection without disabling standard shiv (in case, print protection causes too much trouble, it's still a big hack)
+
+ Extras:
+
+
+ - simple testsuite
+ - [unofficial] API (created for testing, but can be used for monkey patching)
+
+ Known issues:
+
+
+ -
+
@media screen {}
blocks in media all are treated as print-styles (This would need a big rewrite)
+ - selector order (Currently, this seems "by design", but should be changed. Also needs a big rewrite)
+ - change of selector specificity (
.iepp_article <-> article
) (Currently this seems "by design", but for IE7 and IE8, it can be changed to[data-iepp-elem="article"]
<-> article
)
+
Before someone is looking into the first two known issues, we should create good performance tests. Fixing last issue only makes sense, if we also fix the selector order...
+
\ No newline at end of file
diff --git a/html5shiv/html5shiv_3.7.2/LICENSE.htm b/html5shiv/html5shiv_3.7.2/LICENSE.htm
new file mode 100644
index 00000000..7552c80f
--- /dev/null
+++ b/html5shiv/html5shiv_3.7.2/LICENSE.htm
@@ -0,0 +1 @@
+Dual licensed as MIT and GPL2
\ No newline at end of file
diff --git a/html5shiv/html5shiv_3.7.2/html5shiv-printshiv.js b/html5shiv/html5shiv_3.7.2/html5shiv-printshiv.js
new file mode 100644
index 00000000..c2913b51
--- /dev/null
+++ b/html5shiv/html5shiv_3.7.2/html5shiv-printshiv.js
@@ -0,0 +1,520 @@
+/**
+* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+;(function(window, document) {
+/*jshint evil:true */
+ /** version */
+ var version = '3.7.2';
+
+ /** Preset options */
+ var options = window.html5 || {};
+
+ /** Used to skip problem elements */
+ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+ /** Not all elements can be cloned in IE **/
+ 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;
+
+ /** Detect whether the browser supports default html5 styles */
+ var supportsHtml5Styles;
+
+ /** Name of the expando, to work with multiple documents or to re-shiv one document */
+ var expando = '_html5shiv';
+
+ /** The id for the the documents expando */
+ var expanID = 0;
+
+ /** Cached data for each document */
+ var expandoData = {};
+
+ /** Detect whether the browser supports unknown elements */
+ var supportsUnknownElements;
+
+ (function() {
+ try {
+ var a = document.createElement('a');
+ a.innerHTML = '';
+ //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+ supportsHtml5Styles = ('hidden' in a);
+
+ supportsUnknownElements = a.childNodes.length == 1 || (function() {
+ // assign a false positive if unable to shiv
+ (document.createElement)('a');
+ var frag = document.createDocumentFragment();
+ return (
+ typeof frag.cloneNode == 'undefined' ||
+ typeof frag.createDocumentFragment == 'undefined' ||
+ typeof frag.createElement == 'undefined'
+ );
+ }());
+ } catch(e) {
+ // assign a false positive if detection fails => unable to shiv
+ supportsHtml5Styles = true;
+ supportsUnknownElements = true;
+ }
+
+ }());
+
+ /*--------------------------------------------------------------------------*/
+
+ /**
+ * Creates a style sheet with the given CSS text and adds it to the document.
+ * @private
+ * @param {Document} ownerDocument The document.
+ * @param {String} cssText The CSS text.
+ * @returns {StyleSheet} The style element.
+ */
+ function addStyleSheet(ownerDocument, cssText) {
+ var p = ownerDocument.createElement('p'),
+ parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+ p.innerHTML = 'x';
+ return parent.insertBefore(p.lastChild, parent.firstChild);
+ }
+
+ /**
+ * Returns the value of `html5.elements` as an array.
+ * @private
+ * @returns {Array} An array of shived element node names.
+ */
+ function getElements() {
+ var elements = html5.elements;
+ return typeof elements == 'string' ? elements.split(' ') : elements;
+ }
+
+ /**
+ * Extends the built-in list of html5 elements
+ * @memberOf html5
+ * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
+ * @param {Document} ownerDocument The context document.
+ */
+ function addElements(newElements, ownerDocument) {
+ var elements = html5.elements;
+ if(typeof elements != 'string'){
+ elements = elements.join(' ');
+ }
+ if(typeof newElements != 'string'){
+ newElements = newElements.join(' ');
+ }
+ html5.elements = elements +' '+ newElements;
+ shivDocument(ownerDocument);
+ }
+
+ /**
+ * Returns the data associated to the given document
+ * @private
+ * @param {Document} ownerDocument The document.
+ * @returns {Object} An object of data.
+ */
+ function getExpandoData(ownerDocument) {
+ var data = expandoData[ownerDocument[expando]];
+ if (!data) {
+ data = {};
+ expanID++;
+ ownerDocument[expando] = expanID;
+ expandoData[expanID] = data;
+ }
+ return data;
+ }
+
+ /**
+ * returns a shived element for the given nodeName and document
+ * @memberOf html5
+ * @param {String} nodeName name of the element
+ * @param {Document} ownerDocument The context document.
+ * @returns {Object} The shived element.
+ */
+ function createElement(nodeName, ownerDocument, data){
+ if (!ownerDocument) {
+ ownerDocument = document;
+ }
+ if(supportsUnknownElements){
+ return ownerDocument.createElement(nodeName);
+ }
+ if (!data) {
+ data = getExpandoData(ownerDocument);
+ }
+ var node;
+
+ if (data.cache[nodeName]) {
+ node = data.cache[nodeName].cloneNode();
+ } else if (saveClones.test(nodeName)) {
+ node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+ } else {
+ node = data.createElem(nodeName);
+ }
+
+ // Avoid adding some elements to fragments in IE < 9 because
+ // * Attributes like `name` or `type` cannot be set/changed once an element
+ // is inserted into a document/fragment
+ // * Link elements with `src` attributes that are inaccessible, as with
+ // a 403 response, will cause the tab/window to crash
+ // * Script elements appended to fragments will execute when their `src`
+ // or `text` property is set
+ return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
+ }
+
+ /**
+ * returns a shived DocumentFragment for the given document
+ * @memberOf html5
+ * @param {Document} ownerDocument The context document.
+ * @returns {Object} The shived DocumentFragment.
+ */
+ function createDocumentFragment(ownerDocument, data){
+ if (!ownerDocument) {
+ ownerDocument = document;
+ }
+ if(supportsUnknownElements){
+ return ownerDocument.createDocumentFragment();
+ }
+ data = data || getExpandoData(ownerDocument);
+ var clone = data.frag.cloneNode(),
+ i = 0,
+ elems = getElements(),
+ l = elems.length;
+ for(;i+~])(' + getElements().join('|') + ')(?=[[\\s,>+~#.:]|$)', 'gi'),
+ replacement = '$1' + shivNamespace + '\\:$2';
+
+ while (index--) {
+ pair = parts[index] = parts[index].split('}');
+ pair[pair.length - 1] = pair[pair.length - 1].replace(reElements, replacement);
+ parts[index] = pair.join('}');
+ }
+ return parts.join('{');
+ }
+
+ /**
+ * Removes the given wrappers, leaving the original elements.
+ * @private
+ * @params {Array} wrappers An array of printable wrappers.
+ */
+ function removeWrappers(wrappers) {
+ var index = wrappers.length;
+ while (index--) {
+ wrappers[index].removeNode();
+ }
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ /**
+ * Shivs the given document for print.
+ * @memberOf html5
+ * @param {Document} ownerDocument The document to shiv.
+ * @returns {Document} The shived document.
+ */
+ function shivPrint(ownerDocument) {
+ var shivedSheet,
+ wrappers,
+ data = getExpandoData(ownerDocument),
+ namespaces = ownerDocument.namespaces,
+ ownerWindow = ownerDocument.parentWindow;
+
+ if (!supportsShivableSheets || ownerDocument.printShived) {
+ return ownerDocument;
+ }
+ if (typeof namespaces[shivNamespace] == 'undefined') {
+ namespaces.add(shivNamespace);
+ }
+
+ function removeSheet() {
+ clearTimeout(data._removeSheetTimer);
+ if (shivedSheet) {
+ shivedSheet.removeNode(true);
+ }
+ shivedSheet= null;
+ }
+
+ ownerWindow.attachEvent('onbeforeprint', function() {
+
+ removeSheet();
+
+ var imports,
+ length,
+ sheet,
+ collection = ownerDocument.styleSheets,
+ cssText = [],
+ index = collection.length,
+ sheets = Array(index);
+
+ // convert styleSheets collection to an array
+ while (index--) {
+ sheets[index] = collection[index];
+ }
+ // concat all style sheet CSS text
+ while ((sheet = sheets.pop())) {
+ // IE does not enforce a same origin policy for external style sheets...
+ // but has trouble with some dynamically created stylesheets
+ if (!sheet.disabled && reMedia.test(sheet.media)) {
+
+ try {
+ imports = sheet.imports;
+ length = imports.length;
+ } catch(er){
+ length = 0;
+ }
+
+ for (index = 0; index < length; index++) {
+ sheets.push(imports[index]);
+ }
+
+ try {
+ cssText.push(sheet.cssText);
+ } catch(er){}
+ }
+ }
+
+ // wrap all HTML5 elements with printable elements and add the shived style sheet
+ cssText = shivCssText(cssText.reverse().join(''));
+ wrappers = addWrappers(ownerDocument);
+ shivedSheet = addStyleSheet(ownerDocument, cssText);
+
+ });
+
+ ownerWindow.attachEvent('onafterprint', function() {
+ // remove wrappers, leaving the original elements, and remove the shived style sheet
+ removeWrappers(wrappers);
+ clearTimeout(data._removeSheetTimer);
+ data._removeSheetTimer = setTimeout(removeSheet, 500);
+ });
+
+ ownerDocument.printShived = true;
+ return ownerDocument;
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ // expose API
+ html5.type += ' print';
+ html5.shivPrint = shivPrint;
+
+ // shiv for print
+ shivPrint(document);
+
+}(this, document));
diff --git a/html5shiv/html5shiv_3.7.2/html5shiv.dnn b/html5shiv/html5shiv_3.7.2/html5shiv.dnn
new file mode 100644
index 00000000..7d10fd3c
--- /dev/null
+++ b/html5shiv/html5shiv_3.7.2/html5shiv.dnn
@@ -0,0 +1,39 @@
+
+
+
+ HTML5 Shiv
+
+ The HTML5 Shiv enables use of HTML5 sectioning elements in legacy Internet Explorer and provides basic HTML5 styling for Internet Explorer 6-9, Safari 4.x (and iPhone 3.x), and Firefox 3.x.
+ This also includes the print shiv, a mechanism allowing HTML5 elements to be styled and contain children while being printed in IE 6-8.
+
+
+ Engage Software
+ Engage Software
+ http://www.engagesoftware.com
+ support@engagesoftware.com
+
+
+
+ true
+
+
+
+ html5shiv
+ html5shiv-printshiv.js
+ html5
+ PageHead
+ https://cdn.jsdelivr.net/html5shiv/3.7.2/html5shiv-printshiv.min.js
+
+
+
+
+ html5shiv
+
+ html5shiv-printshiv.js
+
+
+
+
+
+
+
\ No newline at end of file