webshims-rails 1.10.9 → 1.10.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +8 -9
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +24 -14
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +61 -20
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +54 -16
  7. data/vendor/assets/javascripts/webshims/shims/combos/12.js +9 -13
  8. data/vendor/assets/javascripts/webshims/shims/combos/13.js +8 -12
  9. data/vendor/assets/javascripts/webshims/shims/combos/14.js +10 -7
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +40 -11
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +49 -24
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +128 -19
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +131 -22
  14. data/vendor/assets/javascripts/webshims/shims/combos/19.js +133 -40
  15. data/vendor/assets/javascripts/webshims/shims/combos/2.js +31 -18
  16. data/vendor/assets/javascripts/webshims/shims/combos/20.js +132 -39
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +116 -22
  18. data/vendor/assets/javascripts/webshims/shims/combos/23.js +9 -13
  19. data/vendor/assets/javascripts/webshims/shims/combos/24.js +48 -13
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +133 -40
  21. data/vendor/assets/javascripts/webshims/shims/combos/26.js +7 -4
  22. data/vendor/assets/javascripts/webshims/shims/combos/27.js +1 -1
  23. data/vendor/assets/javascripts/webshims/shims/combos/28.js +121 -24
  24. data/vendor/assets/javascripts/webshims/shims/combos/29.js +4 -6
  25. data/vendor/assets/javascripts/webshims/shims/combos/3.js +30 -6
  26. data/vendor/assets/javascripts/webshims/shims/combos/30.js +30 -6
  27. data/vendor/assets/javascripts/webshims/shims/combos/31.js +22 -5
  28. data/vendor/assets/javascripts/webshims/shims/combos/4.js +15 -5
  29. data/vendor/assets/javascripts/webshims/shims/combos/5.js +128 -19
  30. data/vendor/assets/javascripts/webshims/shims/combos/6.js +128 -19
  31. data/vendor/assets/javascripts/webshims/shims/combos/7.js +39 -19
  32. data/vendor/assets/javascripts/webshims/shims/combos/8.js +39 -19
  33. data/vendor/assets/javascripts/webshims/shims/combos/9.js +61 -20
  34. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +7 -4
  35. data/vendor/assets/javascripts/webshims/shims/es5.js +3 -3
  36. data/vendor/assets/javascripts/webshims/shims/form-core.js +15 -1
  37. data/vendor/assets/javascripts/webshims/shims/form-message.js +8 -1
  38. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +74 -3
  39. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +53 -15
  40. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +10 -5
  41. data/vendor/assets/javascripts/webshims/shims/form-validation.js +48 -13
  42. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +14 -2
  43. data/vendor/assets/javascripts/webshims/shims/geolocation.js +2 -2
  44. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +2 -2
  45. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-ZN.js +2 -2
  46. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.txt +2 -2
  47. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +2 -2
  48. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.txt +2 -2
  49. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +2 -2
  50. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +2 -2
  51. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +2 -2
  52. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +2 -2
  53. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +2 -2
  54. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +2 -2
  55. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +2 -2
  56. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +7 -4
  57. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +2 -2
  58. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +106 -0
  59. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +2 -2
  60. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +2 -2
  61. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +2 -2
  62. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +8 -12
  63. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +114 -20
  64. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +132 -17
  65. data/vendor/assets/javascripts/webshims/shims/range-ui.js +1 -1
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +38 -3
  67. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +42 -13
  68. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  69. data/vendor/assets/javascripts/webshims/shims/swfmini.js +1 -1
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +4 -6
  71. metadata +3 -2
@@ -12,14 +12,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
12
12
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
13
13
  }
14
14
 
15
- if(webshims.cfg.extendNative == 1){
15
+ if(webshims.cfg.extendNative === 1){
16
16
  webshims.warn("extendNative configuration will be set to false by default with next release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
17
17
  }
18
18
 
19
19
  if (!webshims.cfg.no$Switch) {
20
20
  var switch$ = function(){
21
21
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
22
- webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly..");
22
+ webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly. Or set webshims.cfg.no$Switch to 'true'.");
23
23
  if (window.$) {
24
24
  window.$ = webshims.$;
25
25
  }
@@ -561,6 +561,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
561
561
  setInterval(this.test, 600);
562
562
  $(this.test);
563
563
  webshims.ready('WINDOWLOAD', this.test);
564
+ $(document).on('updatelayout', this.handler);
564
565
  $(window).bind('resize', this.handler);
565
566
  (function(){
566
567
  var oldAnimate = $.fn.animate;
@@ -608,7 +609,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
608
609
 
609
610
  $(nativeElem).on('remove', function(e){
610
611
  if (!e.originalEvent) {
611
- $(shadowElem).remove();
612
+ setTimeout(function(){
613
+ $(shadowElem).remove();
614
+ }, 4);
612
615
  }
613
616
  });
614
617
 
@@ -1086,7 +1089,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1086
1089
  }
1087
1090
  });
1088
1091
 
1089
- })(jQuery, document);
1092
+ })(webshims.$, document);
1090
1093
 
1091
1094
  webshims.register('filereader', function( $, webshims ){
1092
1095
  "use strict";
@@ -8,7 +8,7 @@ var swfmini = function() {
8
8
 
9
9
  var UNDEF = "undefined",
10
10
  OBJECT = "object",
11
- webshims = jQuery.webshims || window.webshims,
11
+ webshims = window.webshims,
12
12
  SHOCKWAVE_FLASH = "Shockwave Flash",
13
13
  SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
14
14
  FLASH_MIME_TYPE = "application/x-shockwave-flash",
@@ -12,14 +12,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
12
12
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
13
13
  }
14
14
 
15
- if(webshims.cfg.extendNative == 1){
15
+ if(webshims.cfg.extendNative === 1){
16
16
  webshims.warn("extendNative configuration will be set to false by default with next release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
17
17
  }
18
18
 
19
19
  if (!webshims.cfg.no$Switch) {
20
20
  var switch$ = function(){
21
21
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
22
- webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly..");
22
+ webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly. Or set webshims.cfg.no$Switch to 'true'.");
23
23
  if (window.$) {
24
24
  window.$ = webshims.$;
25
25
  }
@@ -561,6 +561,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
561
561
  setInterval(this.test, 600);
562
562
  $(this.test);
563
563
  webshims.ready('WINDOWLOAD', this.test);
564
+ $(document).on('updatelayout', this.handler);
564
565
  $(window).bind('resize', this.handler);
565
566
  (function(){
566
567
  var oldAnimate = $.fn.animate;
@@ -608,7 +609,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
608
609
 
609
610
  $(nativeElem).on('remove', function(e){
610
611
  if (!e.originalEvent) {
611
- $(shadowElem).remove();
612
+ setTimeout(function(){
613
+ $(shadowElem).remove();
614
+ }, 4);
612
615
  }
613
616
  });
614
617
 
@@ -1086,7 +1089,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1086
1089
  }
1087
1090
  });
1088
1091
 
1089
- })(jQuery, document);
1092
+ })(webshims.$, document);
1090
1093
 
1091
1094
  webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
1092
1095
  "use strict";
@@ -1528,20 +1531,84 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1528
1531
  };
1529
1532
  })();
1530
1533
 
1534
+
1535
+ var transformDimension = (function(){
1536
+ var dimCache = {};
1537
+ var getRealDims = function(data){
1538
+ var ret, poster, img;
1539
+ if(dimCache[data.currentSrc]){
1540
+ ret = dimCache[data.currentSrc];
1541
+ } else if(data.videoHeight && data.videoWidth){
1542
+ dimCache[data.currentSrc] = {
1543
+ width: data.videoWidth,
1544
+ height: data.videoHeight
1545
+ };
1546
+ ret = dimCache[data.currentSrc];
1547
+ } else if((poster = $.attr(data._elem, 'poster'))){
1548
+ ret = dimCache[poster];
1549
+ if(!ret){
1550
+ img = document.createElement('img');
1551
+ img.onload = function(){
1552
+ dimCache[poster] = {
1553
+ width: this.width,
1554
+ height: this.height
1555
+ };
1556
+
1557
+ if(dimCache[poster].height && dimCache[poster].width){
1558
+ setElementDimension(data, $.prop(data._elem, 'controls'));
1559
+ } else {
1560
+ delete dimCache[poster];
1561
+ }
1562
+ };
1563
+ img.src = poster;
1564
+ if(img.complete){
1565
+ img.onload();
1566
+ }
1567
+ }
1568
+ }
1569
+ return ret || {width: 300, height: data._elemNodeName == 'video' ? 150 : 50};
1570
+ };
1571
+ return function(data){
1572
+ var realDims, ratio;
1573
+ var ret = data.elemDimensions;
1574
+
1575
+ if(ret.width == 'auto' || ret.height == 'auto'){
1576
+ ret = $.extend({}, data.elemDimensions);
1577
+ realDims = getRealDims(data);
1578
+ ratio = realDims.width / realDims.height;
1579
+
1580
+ if(ret.width == 'auto' && ret.height == 'auto'){
1581
+ ret = realDims;
1582
+ } else if(ret.width == 'auto'){
1583
+ data.shadowElem.css({height: ret.height});
1584
+ ret.width = data.shadowElem.height() * ratio;
1585
+ } else {
1586
+ data.shadowElem.css({width: ret.width});
1587
+ ret.height = data.shadowElem.width() / ratio;
1588
+ }
1589
+ }
1590
+ return ret;
1591
+ };
1592
+ })();
1531
1593
  var setElementDimension = function(data, hasControls){
1532
- var cAttr;
1594
+ var dims;
1533
1595
  var elem = data._elem;
1534
1596
  var box = data.shadowElem;
1535
-
1536
1597
  $(elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
1537
- if(data._elemNodeName == 'audio' && !hasControls){
1538
- box.css({width: 0, height: 0});
1539
- } else {
1540
-
1541
- box.css({
1542
- width: elem.style.width || ((cAttr = $(elem).attr('width')) && cAttr+'px') || $(elem).width(),
1543
- height: elem.style.height|| ((cAttr = $(elem).attr('height')) && cAttr+'px') || $(elem).height()
1544
- });
1598
+
1599
+ if(data.isActive == 'third'){
1600
+ if(data._elemNodeName == 'audio' && !hasControls){
1601
+ box.css({width: 0, height: 0});
1602
+ } else {
1603
+ data.elemDimensions = {
1604
+ width: elem.style.width || $.attr(elem, 'width') || $(elem).width(),
1605
+ height: elem.style.height || $.attr(elem, 'height') || $(elem).height()
1606
+ };
1607
+ dims = transformDimension(data);
1608
+ dims.minWidth = elem.style.minWidth;
1609
+ dims.minHeight = elem.style.minHeight;
1610
+ box.css(dims);
1611
+ }
1545
1612
  }
1546
1613
  };
1547
1614
 
@@ -1569,6 +1636,27 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1569
1636
  replaceVar = function(val){
1570
1637
  return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
1571
1638
  };
1639
+
1640
+ if('matchMedia' in window){
1641
+ var allowMediaSorting = false;
1642
+ try {
1643
+ allowMediaSorting = window.matchMedia('only all').matches;
1644
+ } catch(er){}
1645
+ if(allowMediaSorting){
1646
+ mediaelement.sortMedia = function(src1, src2){
1647
+ try {
1648
+ src1 = !src1.media || matchMedia( src1.media ).matches;
1649
+ src2 = !src2.media || matchMedia( src2.media ).matches;
1650
+ } catch(er){
1651
+ return 0;
1652
+ }
1653
+ return src1 == src2 ?
1654
+ 0 :
1655
+ src1 ? -1
1656
+ : 1;
1657
+ };
1658
+ }
1659
+ }
1572
1660
 
1573
1661
  mediaelement.createSWF = function( elem, canPlaySrc, data ){
1574
1662
  if(!hasFlash){
@@ -1620,7 +1708,9 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1620
1708
  $(elem).data('attrs')
1621
1709
  );
1622
1710
  var setDimension = function(){
1623
- setElementDimension(data, $.prop(elem, 'controls'));
1711
+ if(data.isActive == 'third'){
1712
+ setElementDimension(data, $.prop(elem, 'controls'));
1713
+ }
1624
1714
  };
1625
1715
 
1626
1716
  var box;
@@ -1686,7 +1776,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1686
1776
  }
1687
1777
  }));
1688
1778
 
1689
- setElementDimension(data, hasControls);
1779
+
1690
1780
 
1691
1781
  box.insertBefore(elem);
1692
1782
 
@@ -1702,17 +1792,20 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
1702
1792
 
1703
1793
  mediaelement.setActive(elem, 'third', data);
1704
1794
 
1795
+ setElementDimension(data, hasControls);
1796
+
1705
1797
  $(elem)
1706
- .on({'updatemediaelementdimensions': setDimension})
1707
- .onWSOff('updateshadowdom', setDimension)
1708
- .on('remove', function(e){
1709
- if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
1710
- delete mediaelement.jarisEvent[data.id];
1711
- clearTimeout(localConnectionTimer);
1712
- clearTimeout(data.flashBlock);
1798
+ .on({
1799
+ 'updatemediaelementdimensions loadedmetadata emptied': setDimension,
1800
+ 'remove': function(e){
1801
+ if(!e.originalEvent && mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem == elem){
1802
+ delete mediaelement.jarisEvent[data.id];
1803
+ clearTimeout(localConnectionTimer);
1804
+ clearTimeout(data.flashBlock);
1805
+ }
1713
1806
  }
1714
- box.remove();
1715
1807
  })
1808
+ .onWSOff('updateshadowdom', setDimension)
1716
1809
  ;
1717
1810
  }
1718
1811
 
@@ -2018,6 +2111,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2018
2111
  limitedTo: ['', 'auto', 'metadata', 'none']
2019
2112
  });
2020
2113
 
2114
+ webshims.reflectProperties('source', ['type', 'media']);
2115
+
2021
2116
 
2022
2117
  ['autoplay', 'controls'].forEach(function(name){
2023
2118
  webshims.defineNodeNamesBooleanProperty(['audio', 'video'], name);
@@ -2053,6 +2148,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
2053
2148
  }
2054
2149
 
2055
2150
  }, 'prop');
2151
+ } else if(!('media' in document.createElement('source'))){
2152
+ webshims.reflectProperties('source', ['media']);
2056
2153
  }
2057
2154
 
2058
2155
  });
@@ -848,7 +848,7 @@ modified for webshims
848
848
  detectTrackError();
849
849
  }
850
850
  }
851
- })(jQuery)
851
+ })(webshims.$)
852
852
  webshims.register('track-ui', function($, webshims, window, document, undefined){
853
853
  "use strict";
854
854
  var options = webshims.cfg.track;
@@ -961,10 +961,6 @@ webshims.register('track-ui', function($, webshims, window, document, undefined)
961
961
  return ret;
962
962
  }
963
963
 
964
- $.extend($.event.customEvent, {
965
- updatetrackdisplay: true,
966
- forceupdatetrackdisplay: true
967
- });
968
964
 
969
965
  mediaelement.trackDisplay = trackDisplay;
970
966
 
@@ -1132,7 +1128,9 @@ webshims.register('track-ui', function($, webshims, window, document, undefined)
1132
1128
 
1133
1129
  elem.on('remove', function(e){
1134
1130
  if(!e.originalEvent && baseData && baseData.trackDisplay){
1135
- baseData.trackDisplay.remove();
1131
+ setTimeout(function(){
1132
+ baseData.trackDisplay.remove();
1133
+ }, 4);
1136
1134
  }
1137
1135
  });
1138
1136
 
@@ -12,14 +12,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
12
12
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
13
13
  }
14
14
 
15
- if(webshims.cfg.extendNative == 1){
15
+ if(webshims.cfg.extendNative === 1){
16
16
  webshims.warn("extendNative configuration will be set to false by default with next release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
17
17
  }
18
18
 
19
19
  if (!webshims.cfg.no$Switch) {
20
20
  var switch$ = function(){
21
21
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
22
- webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly..");
22
+ webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly. Or set webshims.cfg.no$Switch to 'true'.");
23
23
  if (window.$) {
24
24
  window.$ = webshims.$;
25
25
  }
@@ -561,6 +561,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
561
561
  setInterval(this.test, 600);
562
562
  $(this.test);
563
563
  webshims.ready('WINDOWLOAD', this.test);
564
+ $(document).on('updatelayout', this.handler);
564
565
  $(window).bind('resize', this.handler);
565
566
  (function(){
566
567
  var oldAnimate = $.fn.animate;
@@ -608,7 +609,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
608
609
 
609
610
  $(nativeElem).on('remove', function(e){
610
611
  if (!e.originalEvent) {
611
- $(shadowElem).remove();
612
+ setTimeout(function(){
613
+ $(shadowElem).remove();
614
+ }, 4);
612
615
  }
613
616
  });
614
617
 
@@ -1086,7 +1089,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1086
1089
  }
1087
1090
  });
1088
1091
 
1089
- })(jQuery, document);
1092
+ })(webshims.$, document);
1090
1093
 
1091
1094
  webshims.register('form-core', function($, webshims, window, document, undefined, options){
1092
1095
  "use strict";
@@ -1165,6 +1168,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1165
1168
  $.expr[":"][name] = $.expr.filters[name+"-element"];
1166
1169
  });
1167
1170
 
1171
+ //bug was partially fixed in 1.10.0 for IE9, but not IE8 (move to es5 as soon as 1.10.2 is used)
1168
1172
  var pseudoFocus = $.expr[":"].focus;
1169
1173
  $.expr[":"].focus = function(){
1170
1174
  try {
@@ -1187,10 +1191,18 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1187
1191
  };
1188
1192
 
1189
1193
  var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
1194
+ var poCFG = webshims.cfg.wspopover;
1195
+ if(!poCFG.position && poCFG.position !== false){
1196
+ poCFG.position = {
1197
+ at: 'left bottom',
1198
+ my: 'left top',
1199
+ collision: 'fit flip'
1200
+ };
1201
+ }
1190
1202
  webshims.wsPopover = {
1191
1203
  id: 0,
1192
1204
  _create: function(){
1193
- this.options = $.extend({}, webshims.cfg.wspopover, this.options);
1205
+ this.options = $.extend(true, {}, poCFG, this.options);
1194
1206
  this.id = webshims.wsPopover.id++;
1195
1207
  this.eventns = '.wsoverlay' + this.id;
1196
1208
  this.timers = {};
@@ -1237,6 +1249,11 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1237
1249
  var message = $(elem).data('errormessage') || elem.getAttribute('x-moz-errormessage') || '';
1238
1250
  if(key && message[key]){
1239
1251
  message = message[key];
1252
+ } else if(message) {
1253
+ validity = validity || $.prop(elem, 'validity') || {valid: 1};
1254
+ if(validity.valid){
1255
+ message = '';
1256
+ }
1240
1257
  }
1241
1258
  if(typeof message == 'object'){
1242
1259
  validity = validity || $.prop(elem, 'validity') || {valid: 1};
@@ -1503,6 +1520,10 @@ webshims.register('form-message', function($, webshims, window, document, undefi
1503
1520
  });
1504
1521
 
1505
1522
  implementProperties.forEach(function(messageProp){
1523
+ var skipNames = {
1524
+ valid: 1,
1525
+ badInput: 1
1526
+ };
1506
1527
  webshims.defineNodeNamesProperty(['fieldset', 'output', 'button'], messageProp, {
1507
1528
  prop: {
1508
1529
  value: '',
@@ -1531,13 +1552,16 @@ webshims.register('form-message', function($, webshims, window, document, undefi
1531
1552
  if(message){return message;}
1532
1553
  }
1533
1554
  $.each(validity, function(name, prop){
1534
- if(name == 'valid' || !prop){return;}
1555
+ if(skipNames[name] || !prop){return;}
1535
1556
 
1536
1557
  message = webshims.createValidationMessage(elem, name);
1537
1558
  if(message){
1538
1559
  return false;
1539
1560
  }
1540
1561
  });
1562
+ if(!message && validity.badInput){
1563
+ message = webshims.createValidationMessage(elem, 'typeMismatch') || webshims.createValidationMessage(elem, 'valueMissing');
1564
+ }
1541
1565
  return message || '';
1542
1566
  },
1543
1567
  writeable: false
@@ -12,14 +12,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
12
12
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
13
13
  }
14
14
 
15
- if(webshims.cfg.extendNative == 1){
15
+ if(webshims.cfg.extendNative === 1){
16
16
  webshims.warn("extendNative configuration will be set to false by default with next release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
17
17
  }
18
18
 
19
19
  if (!webshims.cfg.no$Switch) {
20
20
  var switch$ = function(){
21
21
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
22
- webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly..");
22
+ webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly. Or set webshims.cfg.no$Switch to 'true'.");
23
23
  if (window.$) {
24
24
  window.$ = webshims.$;
25
25
  }
@@ -561,6 +561,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
561
561
  setInterval(this.test, 600);
562
562
  $(this.test);
563
563
  webshims.ready('WINDOWLOAD', this.test);
564
+ $(document).on('updatelayout', this.handler);
564
565
  $(window).bind('resize', this.handler);
565
566
  (function(){
566
567
  var oldAnimate = $.fn.animate;
@@ -608,7 +609,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
608
609
 
609
610
  $(nativeElem).on('remove', function(e){
610
611
  if (!e.originalEvent) {
611
- $(shadowElem).remove();
612
+ setTimeout(function(){
613
+ $(shadowElem).remove();
614
+ }, 4);
612
615
  }
613
616
  });
614
617
 
@@ -1086,7 +1089,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1086
1089
  }
1087
1090
  });
1088
1091
 
1089
- })(jQuery, document);
1092
+ })(webshims.$, document);
1090
1093
 
1091
1094
  webshims.register('form-core', function($, webshims, window, document, undefined, options){
1092
1095
  "use strict";
@@ -1165,6 +1168,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1165
1168
  $.expr[":"][name] = $.expr.filters[name+"-element"];
1166
1169
  });
1167
1170
 
1171
+ //bug was partially fixed in 1.10.0 for IE9, but not IE8 (move to es5 as soon as 1.10.2 is used)
1168
1172
  var pseudoFocus = $.expr[":"].focus;
1169
1173
  $.expr[":"].focus = function(){
1170
1174
  try {
@@ -1187,10 +1191,18 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1187
1191
  };
1188
1192
 
1189
1193
  var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
1194
+ var poCFG = webshims.cfg.wspopover;
1195
+ if(!poCFG.position && poCFG.position !== false){
1196
+ poCFG.position = {
1197
+ at: 'left bottom',
1198
+ my: 'left top',
1199
+ collision: 'fit flip'
1200
+ };
1201
+ }
1190
1202
  webshims.wsPopover = {
1191
1203
  id: 0,
1192
1204
  _create: function(){
1193
- this.options = $.extend({}, webshims.cfg.wspopover, this.options);
1205
+ this.options = $.extend(true, {}, poCFG, this.options);
1194
1206
  this.id = webshims.wsPopover.id++;
1195
1207
  this.eventns = '.wsoverlay' + this.id;
1196
1208
  this.timers = {};
@@ -1237,6 +1249,11 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1237
1249
  var message = $(elem).data('errormessage') || elem.getAttribute('x-moz-errormessage') || '';
1238
1250
  if(key && message[key]){
1239
1251
  message = message[key];
1252
+ } else if(message) {
1253
+ validity = validity || $.prop(elem, 'validity') || {valid: 1};
1254
+ if(validity.valid){
1255
+ message = '';
1256
+ }
1240
1257
  }
1241
1258
  if(typeof message == 'object'){
1242
1259
  validity = validity || $.prop(elem, 'validity') || {valid: 1};
@@ -1503,6 +1520,10 @@ webshims.register('form-message', function($, webshims, window, document, undefi
1503
1520
  });
1504
1521
 
1505
1522
  implementProperties.forEach(function(messageProp){
1523
+ var skipNames = {
1524
+ valid: 1,
1525
+ badInput: 1
1526
+ };
1506
1527
  webshims.defineNodeNamesProperty(['fieldset', 'output', 'button'], messageProp, {
1507
1528
  prop: {
1508
1529
  value: '',
@@ -1531,13 +1552,16 @@ webshims.register('form-message', function($, webshims, window, document, undefi
1531
1552
  if(message){return message;}
1532
1553
  }
1533
1554
  $.each(validity, function(name, prop){
1534
- if(name == 'valid' || !prop){return;}
1555
+ if(skipNames[name] || !prop){return;}
1535
1556
 
1536
1557
  message = webshims.createValidationMessage(elem, name);
1537
1558
  if(message){
1538
1559
  return false;
1539
1560
  }
1540
1561
  });
1562
+ if(!message && validity.badInput){
1563
+ message = webshims.createValidationMessage(elem, 'typeMismatch') || webshims.createValidationMessage(elem, 'valueMissing');
1564
+ }
1541
1565
  return message || '';
1542
1566
  },
1543
1567
  writeable: false