diff --git a/js-webshim/dev/polyfiller.js b/js-webshim/dev/polyfiller.js
index 5be4df93..502b046d 100644
--- a/js-webshim/dev/polyfiller.js
+++ b/js-webshim/dev/polyfiller.js
@@ -1097,7 +1097,7 @@
webshims.validationMessages = webshims.validityMessages = {
langSrc: 'i18n/formcfg-',
- availableLangs: "ar ca cs el es fa fr he hi hu it ja lt nl no pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
+ availableLangs: "ar ca cs el es fa fr gl he hi hu it ja lt nl no pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
};
webshims.formcfg = $.extend({}, webshims.validationMessages);
diff --git a/js-webshim/dev/polyfiller.js~ b/js-webshim/dev/polyfiller.js~
new file mode 100644
index 00000000..5be4df93
--- /dev/null
+++ b/js-webshim/dev/polyfiller.js~
@@ -0,0 +1,1416 @@
+(function (factory) {
+ if (typeof WSDEBUG === 'undefined') {
+ window.WSDEBUG = true;
+ }
+ var addAsync = function(){
+ if(!window.asyncWebshims){
+ window.asyncWebshims = {
+ cfg: [],
+ ready: []
+ };
+ }
+ };
+ var start = function(){
+ if(window.jQuery){
+ factory(jQuery);
+ factory = function(){return window.webshims;};
+ }
+ };
+
+
+ window.webshims = {
+ setOptions: function(){
+ addAsync();
+ window.asyncWebshims.cfg.push(arguments);
+ },
+
+ ready: function(){
+ addAsync();
+ window.asyncWebshims.ready.push(arguments);
+ },
+ activeLang: function(lang){
+ addAsync();
+ window.asyncWebshims.lang = lang;
+ },
+ polyfill: function(features){
+ addAsync();
+ window.asyncWebshims.polyfill = features;
+ },
+ _curScript: (function(){
+ var scripts, i, scriptUrl, match, regUrl;
+ //modern browsers: Chrome 29+, Firefox 4+
+ var currentScript = document.currentScript;
+
+ //in debug mode remove result to fully test fallback in all browsers
+ if(WSDEBUG){
+ currentScript = false;
+ }
+ if (!currentScript) {
+ //error trick: works in Safari, Chrome, Firefox, IE 10+
+ //idea found here: https://github.com/samyk/jiagra/
+ try {
+ throw(new Error(''));
+ } catch (e) {
+ //Safari has sourceURL
+ scriptUrl = (e.sourceURL || e.stack || '').split('\n');
+ regUrl = /(?:fil|htt|wid|abo|app|res)(.)+/i;
+
+ for(i = 0; i < scriptUrl.length; i++){
+ //extract scriptUrl from stack: this is dangerous! All browsers have different string patterns (pattern can even vary between different browser versions). Help to make it bulletproof!!!
+ if((match = scriptUrl[i].match(regUrl))){
+ scriptUrl = match[0].replace(/[\:\s\(]+[\d\:\)\(\s]+$/, '');
+ break;
+ }
+ }
+
+
+ }
+
+ scripts = document.scripts || document.getElementsByTagName('script');
+
+ //get script by URL or by readyState == 'interactive' (readySate is supported in IE10-)
+ //if this fails the last found script is set to the currentScript
+ for (i = 0; i < scripts.length; i++) {
+ if(scripts[i].getAttribute('src')){
+ currentScript = scripts[i];
+ if (scripts[i].readyState == 'interactive' || scriptUrl == scripts[i].src) {
+ if(WSDEBUG){
+ currentScript.wsFoundCurrent = true;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ return currentScript;
+ })()
+ };
+ window.webshim = window.webshims;
+
+
+ window.webshims.timer = setInterval(start, 0);
+ start();
+
+ if (typeof define === 'function' && define.amd) {
+ define('polyfiller', ['jquery'], factory);
+ }
+}(function($){
+ "use strict";
+ var firstRun, path;
+ var navigator = window.navigator;
+ var webshims = window.webshims;
+ var DOMSUPPORT = 'dom-support';
+ var special = $.event.special;
+ var emptyJ = $([]);
+
+ var asyncWebshims = window.asyncWebshims;
+ var support = {};
+ var Object = window.Object;
+ var addSource = function(text){
+ return text +"\n//# sourceURL="+this.url;
+ };
+ var getAutoEnhance = function(prop){
+ return !webCFG.enhanceAuto && prop == 'auto' ? false : prop;
+ };
+ var featureAlias = {
+ matchmedia: 'matchMedia',
+ xhr2: 'filereader',
+ promise: 'es6',
+ URL: 'url'
+ };
+ var supportCapture = 'capture' in create('input');
+
+ clearInterval(webshims.timer);
+ support.advancedObjectProperties = support.objectAccessor = support.ES5 = !!('create' in Object && 'seal' in Object);
+
+ if(support.ES5 && !('toJSON' in Date.prototype)){
+ support.ES5 = false;
+ }
+
+
+ path = ($.support.hrefNormalized === false) ? webshims._curScript.getAttribute("src", 4) : webshims._curScript.src;
+ path = path.split('?')[0].slice(0, path.lastIndexOf("/") + 1) + 'shims/';
+
+ function create(name){
+ return document.createElement(name);
+ }
+
+ $.extend(webshims, {
+ version: '1.15.6',
+
+ cfg: {
+ enhanceAuto: window.Audio && (!window.matchMedia || matchMedia('(min-device-width: 721px)').matches),
+ //addCacheBuster: false,
+ waitReady: true,
+// extendNative: false,
+ loadStyles: true,
+ wsdoc: document,
+ wspopover: {appendTo: 'auto', hideOnBlur: true},
+ ajax: {},
+ loadScript: function(src, success){
+ $.ajax($.extend({}, webCFG.ajax, {url: src, success: success, dataType: 'script', cache: true, global: false, dataFilter: addSource}));
+ },
+ basePath: path
+ },
+ support: support,
+ bugs: {},
+ /*
+ * some data
+ */
+ modules: {},
+ features: {},
+ featureList: [],
+ setOptions: function(name, opts){
+ if (typeof name == 'string' && arguments.length > 1) {
+ webCFG[name] = (!$.isPlainObject(opts)) ? opts : $.extend(true, webCFG[name] || {}, opts);
+ } else if (typeof name == 'object') {
+ $.extend(true, webCFG, name);
+ }
+ },
+ _getAutoEnhance: getAutoEnhance,
+ addPolyfill: function(name, cfg){
+ cfg = cfg || {};
+ var feature = cfg.f || name;
+ if (!webshimsFeatures[feature]) {
+ webshimsFeatures[feature] = [];
+ webshims.featureList.push(feature);
+ webCFG[feature] = {};
+ }
+
+ webshimsFeatures[feature].push(name);
+ cfg.options = $.extend(webCFG[feature], cfg.options);
+
+ addModule(name, cfg);
+ if (cfg.methodNames) {
+ $.each(cfg.methodNames, function(i, methodName){
+ webshims.addMethodName(methodName);
+ });
+ }
+ },
+ polyfill: (function(){
+ var loaded = {};
+ return function(features){
+ if(!features){
+ features = webshims.featureList;
+ WSDEBUG && webshims.warn('loading all features without specifing might be bad for performance');
+ }
+
+ if (typeof features == 'string') {
+ features = features.split(' ');
+ }
+
+ if(WSDEBUG){
+ for(var i = 0; i < features.length; i++){
+ if(loaded[features[i]]){
+ webshims.error(features[i] +' already loaded, you might want to use updatePolyfill instead? see: bit.ly/12BtXX3');
+ }
+ loaded[features[i]] = true;
+ }
+ }
+ return webshims._polyfill(features);
+ };
+ })(),
+ _polyfill: function(features){
+ var toLoadFeatures = [];
+ var hasFormsExt, needExtStyles;
+
+ if(!firstRun.run){
+ hasFormsExt = $.inArray('forms-ext', features) !== -1;
+ firstRun();
+ needExtStyles = (hasFormsExt && !modules["form-number-date-ui"].test()) || (!supportCapture && $.inArray('mediacapture', features) !== -1);
+
+ if(hasFormsExt && $.inArray('forms', features) == -1){
+ features.push('forms');
+ if(WSDEBUG){
+ webshims.warn('need to load forms feature to use forms-ext feature.');
+ }
+ }
+ if(webCFG.loadStyles){
+ loader.loadCSS('styles/shim'+(needExtStyles ? '-ext' : '')+'.css');
+ }
+ }
+
+
+ if (webCFG.waitReady) {
+ $.readyWait++;
+ onReady(features, function(){
+ $.ready(true);
+ });
+ }
+
+ $.each(features, function(i, feature){
+
+ feature = featureAlias[feature] || feature;
+
+ if(!webshimsFeatures[feature]){
+ WSDEBUG && webshims.error("could not find webshims-feature (aborted): "+ feature);
+ isReady(feature, true);
+ return;
+ }
+ if (feature !== webshimsFeatures[feature][0]) {
+ onReady(webshimsFeatures[feature], function(){
+ isReady(feature, true);
+ });
+ }
+ toLoadFeatures = toLoadFeatures.concat(webshimsFeatures[feature]);
+ });
+
+ loadList(toLoadFeatures);
+
+
+ $.each(features, function(i, feature){
+ var o = webCFG[feature];
+ if(!o){return;}
+ if(feature == 'mediaelement' && (o.replaceUI = getAutoEnhance(o.replaceUI))){
+ o.plugins.unshift('mediacontrols');
+ }
+ if(o.plugins && o.plugins.length){
+ loadList(webCFG[feature].plugins);
+ }
+ });
+ },
+
+ /*
+ * handle ready modules
+ */
+ reTest: (function(){
+ var resList;
+ var reTest = function(i, name){
+ var module = modules[name];
+ var readyName = name+'Ready';
+ if(module && !module.loaded && !( (module.test && $.isFunction(module.test) ) ? module.test([]) : module.test )){
+ if(special[readyName]){
+ delete special[readyName];
+ }
+ webshimsFeatures[module.f];
+
+ resList.push(name);
+ }
+ };
+ return function(moduleNames){
+ if(typeof moduleNames == 'string'){
+ moduleNames = moduleNames.split(' ');
+ }
+ resList = [];
+ $.each(moduleNames, reTest);
+ loadList(resList);
+ };
+ })(),
+ isReady: function(name, _set){
+
+ name = name + 'Ready';
+ if (_set) {
+ if (special[name] && special[name].add) {
+ return true;
+ }
+
+ special[name] = $.extend(special[name] || {}, {
+ add: function(details){
+ details.handler.call(this, name);
+ }
+ });
+ $(document).triggerHandler(name);
+ }
+ return !!(special[name] && special[name].add) || false;
+ },
+ ready: function(events, fn /*, _created*/){
+ var _created = arguments[2];
+ if (typeof events == 'string') {
+ events = events.split(' ');
+ }
+
+ if (!_created) {
+ events = $.map($.grep(events, function(evt){
+ return !isReady(evt);
+ }), function(evt){
+ return evt + 'Ready';
+ });
+ }
+ if (!events.length) {
+ fn($, webshims, window, document);
+ return;
+ }
+ var readyEv = events.shift(), readyFn = function(){
+ onReady(events, fn, true);
+ };
+
+ $(document).one(readyEv, readyFn);
+ },
+
+ /*
+ * basic DOM-/jQuery-Helpers
+ */
+
+
+ capturingEvents: function(names, _maybePrevented){
+ if (!document.addEventListener) {
+ return;
+ }
+ if (typeof names == 'string') {
+ names = [names];
+ }
+ $.each(names, function(i, name){
+ var handler = function(e){
+ e = $.event.fix(e);
+ if (_maybePrevented && webshims.capturingEventPrevented) {
+ webshims.capturingEventPrevented(e);
+ }
+ return $.event.dispatch.call(this, e);
+ };
+ special[name] = special[name] || {};
+ if (special[name].setup || special[name].teardown) {
+ return;
+ }
+ $.extend(special[name], {
+ setup: function(){
+ this.addEventListener(name, handler, true);
+ },
+ teardown: function(){
+ this.removeEventListener(name, handler, true);
+ }
+ });
+ });
+ },
+ register: function(name, fn){
+ var module = modules[name];
+ if (!module) {
+ webshims.error("can't find module: " + name);
+ return;
+ }
+ module.loaded = true;
+ var ready = function(){
+ fn($, webshims, window, document, undefined, module.options);
+ isReady(name, true);
+ };
+ if (module.d && module.d.length) {
+ onReady(module.d, ready);
+ } else {
+ ready();
+ }
+
+ },
+ c: {},
+ /*
+ * loader
+ */
+ loader: {
+
+ addModule: function(name, ext){
+ modules[name] = ext;
+ ext.name = ext.name || name;
+ if(!ext.c){
+ ext.c = [];
+ }
+ $.each(ext.c, function(i, comboname){
+ if(!webshims.c[comboname]){
+ webshims.c[comboname] = [];
+ }
+ webshims.c[comboname].push(name);
+ });
+ },
+ loadList: (function(){
+
+ var loadedModules = [];
+ var loadScript = function(src, names){
+ if (typeof names == 'string') {
+ names = [names];
+ }
+ $.merge(loadedModules, names);
+ loader.loadScript(src, false, names);
+ };
+
+ var noNeedToLoad = function(name, list){
+ if (isReady(name) || $.inArray(name, loadedModules) != -1) {
+ return true;
+ }
+ var module = modules[name];
+ var supported;
+ if (module) {
+ supported = (module.test && $.isFunction(module.test)) ? module.test(list) : module.test;
+ if (supported) {
+ isReady(name, true);
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ var setDependencies = function(module, list){
+ if (module.d && module.d.length) {
+ var addDependency = function(i, dependency){
+ if (!noNeedToLoad(dependency, list) && $.inArray(dependency, list) == -1) {
+ list.push(dependency);
+ }
+ };
+ $.each(module.d, function(i, dependency){
+ if (modules[dependency]) {
+ if(!modules[dependency].loaded){
+ addDependency(i, dependency);
+ }
+ }
+ else
+ if (webshimsFeatures[dependency]) {
+ $.each(webshimsFeatures[dependency], addDependency);
+ onReady(webshimsFeatures[dependency], function(){
+ isReady(dependency, true);
+ });
+ }
+ });
+ if (!module.noAutoCallback) {
+ module.noAutoCallback = true;
+ }
+ }
+ };
+
+ return function(list){
+ var module;
+ var loadCombos = [];
+ var i;
+ var len;
+ var foundCombo;
+ var loadCombo = function(j, combo){
+ foundCombo = combo;
+ $.each(webshims.c[combo], function(i, moduleName){
+ if($.inArray(moduleName, loadCombos) == -1 || $.inArray(moduleName, loadedModules) != -1){
+ foundCombo = false;
+ return false;
+ }
+ });
+ if(foundCombo){
+ loadScript('combos/'+foundCombo, webshims.c[foundCombo]);
+ return false;
+ }
+ };
+
+ //length of list is dynamically
+ for (i = 0; i < list.length; i++) {
+ module = modules[list[i]];
+ if (!module || noNeedToLoad(module.name, list)) {
+ if (WSDEBUG && !module) {
+ webshims.warn('could not find: ' + list[i]);
+ }
+ continue;
+ }
+ if (module.css && webCFG.loadStyles) {
+ loader.loadCSS(module.css);
+ }
+
+ if (module.loadInit) {
+ module.loadInit();
+ }
+
+
+ setDependencies(module, list);
+ if(!module.loaded){
+ loadCombos.push(module.name);
+ }
+ module.loaded = true;
+ }
+
+ for(i = 0, len = loadCombos.length; i < len; i++){
+ foundCombo = false;
+
+ module = loadCombos[i];
+
+ if($.inArray(module, loadedModules) == -1){
+ if(webCFG.debug != 'noCombo'){
+ $.each(modules[module].c, loadCombo);
+ }
+ if(!foundCombo){
+ loadScript(modules[module].src || module, module);
+ }
+ }
+ }
+ };
+ })(),
+
+ makePath: function(src){
+ if (src.indexOf('//') != -1 || src.indexOf('/') === 0) {
+ return src;
+ }
+
+ if (src.indexOf('.') == -1) {
+ src += '.js';
+ }
+ if (webCFG.addCacheBuster) {
+ src += webCFG.addCacheBuster;
+ }
+ return webCFG.basePath + src;
+ },
+
+ loadCSS: (function(){
+ var parent, loadedSrcs = {};
+ return function(src){
+ src = this.makePath(src);
+ if (loadedSrcs[src]) {
+ return;
+ }
+ parent = parent || $('link, style')[0] || $('script')[0];
+ loadedSrcs[src] = 1;
+ $('').insertBefore(parent).attr({
+ href: src
+ });
+ };
+ })(),
+
+ loadScript: (function(){
+ var loadedSrcs = {};
+ return function(src, callback, name, noShimPath){
+ if(!noShimPath){
+ src = loader.makePath(src);
+ }
+ if (loadedSrcs[src]) {return;}
+ var complete = function(){
+
+ if (callback) {
+ callback();
+ }
+
+ if (name) {
+ if (typeof name == 'string') {
+ name = name.split(' ');
+ }
+ $.each(name, function(i, name){
+ if (!modules[name]) {
+ return;
+ }
+ if (modules[name].afterLoad) {
+ modules[name].afterLoad();
+ }
+ isReady(!modules[name].noAutoCallback ? name : name + 'FileLoaded', true);
+ });
+
+ }
+ };
+
+ loadedSrcs[src] = 1;
+ webCFG.loadScript(src, complete, $.noop);
+ };
+ })()
+ }
+ });
+
+ /*
+ * shortcuts
+ */
+
+
+ var webCFG = webshims.cfg;
+ var webshimsFeatures = webshims.features;
+ var isReady = webshims.isReady;
+ var onReady = webshims.ready;
+ var addPolyfill = webshims.addPolyfill;
+ var modules = webshims.modules;
+ var loader = webshims.loader;
+ var loadList = loader.loadList;
+ var addModule = loader.addModule;
+ var bugs = webshims.bugs;
+ var removeCombos = [];
+ var importantLogs = {
+ warn: 1,
+ error: 1
+ };
+ var $fn = $.fn;
+ var video = create('video');
+
+ webshims.addMethodName = function(name){
+ name = name.split(':');
+ var prop = name[1];
+ if (name.length == 1) {
+ prop = name[0];
+ name = name[0];
+ } else {
+ name = name[0];
+ }
+
+ $fn[name] = function(){
+ return this.callProp(prop, arguments);
+ };
+ };
+
+ $fn.callProp = function(prop, args){
+ var ret;
+ if(!args){
+ args = [];
+ }
+ this.each(function(){
+ var fn = $.prop(this, prop);
+
+ if (fn && fn.apply) {
+ ret = fn.apply(this, args);
+ if (ret !== undefined) {
+ return false;
+ }
+ } else {
+ webshims.warn(prop+ " is not a method of "+ this);
+ }
+ });
+ return (ret !== undefined) ? ret : this;
+ };
+
+
+
+ webshims.activeLang = (function(){
+
+ if(!('language' in navigator)){
+ navigator.language = navigator.browserLanguage || '';
+ }
+ var curLang = $.attr(document.documentElement, 'lang') || navigator.language;
+ onReady('webshimLocalization', function(){
+ webshims.activeLang(curLang);
+ });
+ return function(lang){
+ if(lang){
+ if (typeof lang == 'string' ) {
+ curLang = lang;
+ } else if(typeof lang == 'object'){
+ var args = arguments;
+ var that = this;
+ onReady('webshimLocalization', function(){
+ webshims.activeLang.apply(that, args);
+ });
+ }
+ }
+ return curLang;
+ };
+ })();
+
+ webshims.errorLog = [];
+ $.each(['log', 'error', 'warn', 'info'], function(i, fn){
+ webshims[fn] = function(message){
+ if( (importantLogs[fn] && webCFG.debug !== false) || webCFG.debug){
+ webshims.errorLog.push(message);
+ if(window.console && console.log){
+ console[(console[fn]) ? fn : 'log'](message);
+ }
+ }
+ };
+ });
+
+ if(WSDEBUG){
+ if(!webshims._curScript.wsFoundCurrent){
+ webshims.error('Could not detect currentScript! Use basePath to set script path.');
+ }
+ }
+
+ /*
+ * jQuery-plugins for triggering dom updates can be also very usefull in conjunction with non-HTML5 DOM-Changes (AJAX)
+ * Example:
+ * webshim.addReady(function(context, insertedElement){
+ * $('div.tabs', context).add(insertedElement.filter('div.tabs')).tabs();
+ * });
+ *
+ * $.ajax({
+ * success: function(html){
+ * $('#main').htmlPolyfill(html);
+ * }
+ * });
+ */
+
+ (function(){
+ //Overwrite DOM-Ready and implement a new ready-method
+ $.isDOMReady = $.isReady;
+ var onReady = function(){
+
+ $.isDOMReady = true;
+ isReady('DOM', true);
+ setTimeout(function(){
+ isReady('WINDOWLOAD', true);
+ }, 9999);
+ };
+
+ firstRun = function(){
+ if(!firstRun.run){
+
+ if(webCFG.debug || (!('crossDomain' in webCFG.ajax) && location.protocol.indexOf('http'))){
+ webCFG.ajax.crossDomain = true;
+ }
+
+ if(WSDEBUG && $.mobile && ($.mobile.textinput || $.mobile.rangeslider || $.mobile.button)){
+ webshims.info('jQM textinput/rangeslider/button detected waitReady was set to false. Use webshims.ready("featurename") to script against polyfilled methods/properties');
+
+ if(!webCFG.readyEvt){
+ webshims.error('in a jQuery mobile enviroment: you should change the readyEvt to "pageinit".');
+ }
+
+ if(webCFG.waitReady){
+ webshims.error('in a jQuery mobile enviroment: you should change the waitReady to false.')
+ }
+ }
+
+ if (WSDEBUG && webCFG.waitReady && $.isReady) {
+ webshims.warn('Call webshims.polyfill before DOM-Ready or set waitReady to false.');
+ }
+
+ if(!$.isDOMReady && webCFG.waitReady){
+ var $Ready = $.ready;
+ $.ready = function(unwait){
+ if(unwait !== true && document.body){
+ onReady();
+ }
+ return $Ready.apply(this, arguments);
+ };
+ $.ready.promise = $Ready.promise;
+ }
+ if(webCFG.readyEvt){
+ $(document).one(webCFG.readyEvt, onReady);
+ } else {
+ $(onReady);
+ }
+ }
+ firstRun.run = true;
+ };
+
+ $(window).on('load', function(){
+ onReady();
+ setTimeout(function(){
+ isReady('WINDOWLOAD', true);
+ }, 9);
+ });
+
+ var readyFns = [];
+ var eachTrigger = function(){
+ if(this.nodeType == 1){
+ webshims.triggerDomUpdate(this);
+ }
+ };
+ $.extend(webshims, {
+ addReady: function(fn){
+ var readyFn = function(context, elem){
+ webshims.ready('DOM', function(){fn(context, elem);});
+ };
+ readyFns.push(readyFn);
+
+ if(webCFG.wsdoc){
+ readyFn(webCFG.wsdoc, emptyJ);
+ }
+ },
+ triggerDomUpdate: function(context){
+ if(!context || !context.nodeType){
+ if(context && context.jquery){
+ context.each(function(){
+ webshims.triggerDomUpdate(this);
+ });
+ }
+ return;
+ }
+ var type = context.nodeType;
+ if(type != 1 && type != 9){return;}
+ var elem = (context !== document) ? $(context) : emptyJ;
+ $.each(readyFns, function(i, fn){
+ fn(context, elem);
+ });
+ }
+ });
+
+ $fn.clonePolyfill = $fn.clone;
+
+ $fn.htmlPolyfill = function(a){
+ if(!arguments.length){
+ return $(this.clonePolyfill()).html();
+ }
+ var ret = $fn.html.call(this, a);
+ if(ret === this && $.isDOMReady){
+ this.each(eachTrigger);
+ }
+ return ret;
+ };
+
+ $fn.jProp = function(){
+ return this.pushStack($($fn.prop.apply(this, arguments) || []));
+ };
+
+ $.each(['after', 'before', 'append', 'prepend', 'replaceWith'], function(i, name){
+ $fn[name+'Polyfill'] = function(a){
+ a = $(a);
+ $fn[name].call(this, a);
+ if($.isDOMReady){
+ a.each(eachTrigger);
+ }
+ return this;
+ };
+
+ });
+
+ $.each(['insertAfter', 'insertBefore', 'appendTo', 'prependTo', 'replaceAll'], function(i, name){
+ $fn[name.replace(/[A-Z]/, function(c){return "Polyfill"+c;})] = function(){
+ $fn[name].apply(this, arguments);
+ if($.isDOMReady){
+ webshims.triggerDomUpdate(this);
+ }
+ return this;
+ };
+ });
+
+ $fn.updatePolyfill = function(){
+ if($.isDOMReady){
+ webshims.triggerDomUpdate(this);
+ }
+ return this;
+ };
+
+ $.each(['getNativeElement', 'getShadowElement', 'getShadowFocusElement'], function(i, name){
+ $fn[name] = function(){
+ return this.pushStack(this);
+ };
+ });
+
+ })();
+
+
+ if(WSDEBUG){
+ webCFG.debug = true;
+ }
+
+ if(Object.create){
+ webshims.objectCreate = function(proto, props, opts){
+ if(WSDEBUG && props){
+ webshims.error('second argument for webshims.objectCreate is only available with DOM support');
+ }
+ var o = Object.create(proto);
+ if(opts){
+ o.options = $.extend(true, {}, o.options || {}, opts);
+ opts = o.options;
+ }
+ if(o._create && $.isFunction(o._create)){
+ o._create(opts);
+ }
+ return o;
+ };
+ }
+
+
+
+
+ /*
+ * Start Features
+ */
+
+ /* general modules */
+ /* change path $.webshims.modules[moduleName].src */
+
+
+ addModule('swfmini', {
+ test: function(){
+ if(window.swfobject && !window.swfmini){
+ window.swfmini = window.swfobject;
+ }
+ return ('swfmini' in window);
+ },
+ c: [16, 7, 2, 8, 1, 12, 23]
+ });
+ modules.swfmini.test();
+
+ addModule('sizzle', {test: $.expr.filters});
+ /*
+ * polyfill-Modules
+ */
+
+ // webshims lib uses a of http://github.com/kriskowal/es5-shim/ to implement
+ addPolyfill('es5', {
+ test: !!(support.ES5 && Function.prototype.bind),
+ d: ['sizzle']
+ });
+
+ addPolyfill('dom-extend', {
+ f: DOMSUPPORT,
+ noAutoCallback: true,
+ d: ['es5'],
+ c: [16, 7, 2, 15, 30, 3, 8, 4, 9, 10, 25, 31, 34]
+ });
+
+ //
+
+ //
+
+ //
+
+ //
+
+ //
+
+ //
+
+
+ //
+
+ //
+
+
+ //')[0];
+
+ support.inputtypes = inputtypes;
+
+ $.each(['range', 'date', 'datetime-local', 'month', 'color', 'number'], function(i, type){
+ input.setAttribute('type', type);
+ inputtypes[type] = (input.type == type && (input.value = testValue) && input.value != testValue);
+ });
+
+ support.datalist = !!(('options' in create('datalist')) && window.HTMLDataListElement);
+
+ support[formvalidation] = ('checkValidity' in input);
+
+ support.fieldsetelements = ('elements' in fieldset);
+
+
+ if((support.fieldsetdisabled = ('disabled' in fieldset))){
+ try {
+ if(fieldset.querySelector(':invalid')){
+ fieldset.disabled = true;
+ tmp = !fieldset.querySelector(':invalid') && fieldset.querySelector(':disabled');
+ }
+ } catch(er){}
+ support.fieldsetdisabled = !!tmp;
+ }
+
+ if(support[formvalidation]){
+ bustedWidgetUi = !support.fieldsetdisabled || !support.fieldsetelements || !('value' in progress) || !('value' in output);
+ replaceBustedUI = bustedWidgetUi && (/Android/i).test(navigator.userAgent);
+ bustedValidity = window.opera || bugs.bustedValidity || bustedWidgetUi || !support.datalist;
+
+ if(!bustedValidity && inputtypes.number){
+ bustedValidity = true;
+ try {
+ input.type = 'number';
+ input.value = '';
+ input.stepUp();
+ bustedValidity = input.value != '1';
+ } catch(e){}
+ }
+
+ }
+
+ bugs.bustedValidity = bustedValidity;
+
+ formExtend = support[formvalidation] && !bustedValidity ? 'form-native-extend' : fShim;
+ initialFormTest = $.noop;
+ return false;
+ };
+ var typeTest = function(o){
+ var ret = true;
+ if(!o._types){
+ o._types = o.types.split(' ');
+ }
+ $.each(o._types, function(i, name){
+ if((name in inputtypes) && !inputtypes[name]){
+ ret = false;
+ return false;
+ }
+ });
+ return ret;
+ };
+
+
+ webshims.validationMessages = webshims.validityMessages = {
+ langSrc: 'i18n/formcfg-',
+ availableLangs: "ar ca cs el es fa fr he hi hu it ja lt nl no pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
+ };
+ webshims.formcfg = $.extend({}, webshims.validationMessages);
+
+ webshims.inputTypes = {};
+
+ addPolyfill('form-core', {
+ f: 'forms',
+ test: initialFormTest,
+ d: ['es5'],
+ options: {
+ placeholderType: 'value',
+ messagePopover: {},
+ list: {
+ popover: {
+ constrainWidth: true
+ }
+ },
+ iVal: {
+ sel: '.ws-validate',
+ handleBubble: 'hide',
+ recheckDelay: 400
+// ,fx: 'slide'
+ }
+ // ,customMessages: false,
+ // overridePlaceholder: false, // might be good for IE10
+ // replaceValidationUI: false
+ },
+ methodNames: ['setCustomValidity', 'checkValidity', 'setSelectionRange'],
+ c: [16, 7, 2, 8, 1, 15, 30, 3, 31]
+ });
+
+ formOptions = webCFG.forms;
+
+ addPolyfill('form-native-extend', {
+ f: 'forms',
+ test: function(toLoad){
+ initialFormTest();
+ return !support[formvalidation] || bustedValidity || $.inArray(fNuAPI, toLoad || []) == -1 || modules[fNuAPI].test();
+ },
+ d: ['form-core', DOMSUPPORT, 'form-message'],
+ c: [6, 5, 14, 29]
+ });
+
+ addPolyfill(fShim, {
+ f: 'forms',
+ test: function(){
+ initialFormTest();
+ return support[formvalidation] && !bustedValidity;
+ },
+ d: ['form-core', DOMSUPPORT, 'sizzle'],
+ c: [16, 15, 28]
+ });
+
+ addPolyfill(fShim+'2', {
+ f: 'forms',
+ test: function(){
+ initialFormTest();
+ return support[formvalidation] && !bustedWidgetUi;
+ },
+ d: [fShim],
+ c: [27]
+ });
+
+ addPolyfill('form-message', {
+ f: 'forms',
+ test: function(toLoad){
+ initialFormTest();
+ return !( formOptions.customMessages || !support[formvalidation] || bustedValidity || !modules[formExtend].test(toLoad) );
+ },
+ d: [DOMSUPPORT],
+ c: [16, 7, 15, 30, 3, 8, 4, 14, 28]
+ });
+
+
+ addPolyfill(fNuAPI, {
+ f: 'forms-ext',
+ options: {
+ types: 'date time range number'
+ },
+ test: function(){
+ initialFormTest();
+ var ret = !bustedValidity;
+
+ if(ret){
+ ret = typeTest(this.options);
+ }
+
+ return ret;
+ },
+ methodNames: ['stepUp', 'stepDown'],
+ d: ['forms', DOMSUPPORT],
+ c: [6, 5, 17, 14, 28, 29, 33]
+ });
+
+ addModule('range-ui', {
+ options: {},
+ noAutoCallback: true,
+ test: function(){
+ return !!$fn.rangeUI;
+ },
+ d: ['es5'],
+ c: [6, 5, 9, 10, 17, 11]
+ });
+
+ addPolyfill('form-number-date-ui', {
+ f: 'forms-ext',
+ test: function(){
+ var o = this.options;
+ o.replaceUI = getAutoEnhance(o.replaceUI);
+ initialFormTest();
+ //input widgets on old androids can't be trusted
+ if(!o.replaceUI && replaceBustedUI){
+ o.replaceUI = true;
+ }
+ return !o.replaceUI && typeTest(o);
+ },
+ d: ['forms', DOMSUPPORT, fNuAPI, 'range-ui'],
+ options: {
+ widgets: {
+ calculateWidth: true,
+ animate: true
+ }
+ },
+ c: [6, 5, 9, 10, 17, 11]
+ });
+
+ addPolyfill('form-datalist', {
+ f: 'forms',
+ test: function(){
+ initialFormTest();
+ if(replaceBustedUI){
+ formOptions.customDatalist = true;
+ }
+ return support.datalist && !formOptions.fD;
+ },
+ d: ['form-core', DOMSUPPORT],
+ c: [16, 7, 6, 2, 9, 15, 30, 31, 28, 33]
+ });
+ })();
+ //>
+
+ //
+
+ //
+
+ //
+
+ //
+
+
+ //>removeCombos<
+ addPolyfill('feature-dummy', {
+ test: true,
+ loaded: true,
+ c: removeCombos
+ });
+
+ webshims.$ = $;
+ $.webshims = webshims;
+ $.webshim = webshim;
+
+ webshims.callAsync = function(){
+ webshims.callAsync = $.noop;
+
+ if(asyncWebshims){
+ if(asyncWebshims.cfg){
+ if(!asyncWebshims.cfg.length){
+ asyncWebshims.cfg = [[asyncWebshims.cfg]];
+ }
+ $.each(asyncWebshims.cfg, function(i, cfg){
+ webshims.setOptions.apply(webshims, cfg);
+ });
+ }
+ if(asyncWebshims.ready){
+ $.each(asyncWebshims.ready, function(i, ready){
+ webshims.ready.apply(webshims, ready);
+ });
+ }
+ if(asyncWebshims.lang){
+ webshims.activeLang(asyncWebshims.lang);
+ }
+ if('polyfill' in asyncWebshims){
+ webshims.polyfill(asyncWebshims.polyfill);
+ }
+ }
+ webshims.isReady('jquery', true);
+ };
+
+ webshims.callAsync();
+ return webshims;
+}));
diff --git a/js-webshim/dev/shims/i18n/formcfg-es.js b/js-webshim/dev/shims/i18n/formcfg-es.js
index 8dcc4a60..0ab74e9f 100644
--- a/js-webshim/dev/shims/i18n/formcfg-es.js
+++ b/js-webshim/dev/shims/i18n/formcfg-es.js
@@ -1,65 +1,77 @@
-webshims.validityMessages.es = {
- "typeMismatch": {
- "email": "Por favor, introduzca una dirección de correo.",
- "url": "Por favor, introduzca una URL."
- },
- "badInput": {
- "number": "Valor no válido",
- "date": "Valor no válido",
- "time": "Valor no válido",
- "range": "Valor no válido",
- "datetime-local": "Valor no válido"
- },
- "tooLong": "Valor no válido",
- "patternMismatch": "Por favor, ajústese al formato solicitado: {%title}.",
- "valueMissing": {
- "defaultMessage": "Por favor, rellene este campo.",
- "checkbox": "Por favor, marque esta casilla si desea continuar.",
- "select": "Por favor, seleccione un elemento de la lista.",
- "radio": "Por favor, seleccione una de estas opciones."
- },
- "rangeUnderflow": {
- "defaultMessage": "El valor debe superior o igual a {%min}.",
- "date": "El valor debe superior o igual a {%min}.",
- "time": "El valor debe superior o igual a {%min}.",
- "datetime-local": "El valor debe superior o igual a {%min}."
- },
- "rangeOverflow": {
- "defaultMessage": "El valor debe inferior o igual a {%max}.",
- "date": "El valor debe inferior o igual a {%max}.",
- "time": "El valor debe inferior o igual a {%max}.",
- "datetime-local": "El valor debe inferior o igual a {%max}."
- },
- "stepMismatch": "Valor no válido"
-};
-webshims.formcfg.es = {
- numberFormat: {
- ".": ".",
- ",": ","
- },
- numberSigns: '.',
- dateSigns: '/',
- timeSigns: ":. ",
- dFormat: "/",
- patterns: {
- d: 'dd/mm/yy'
- },
- date: {
- closeText: 'Cerrar',
- prevText: '<Ant',
- nextText: 'Sig>',
- currentText: 'Hoy',
- monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
- 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
- monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
- 'Jul','Ago','Sep','Oct','Nov','Dic'],
- dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],
- dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],
- dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],
- weekHeader: 'Sm',
- firstDay: 1,
- isRTL: false,
- showMonthAfterYear: false,
- yearSuffix: ''
- }
-};
\ No newline at end of file
+ webshims.validityMessages.es = {
+ typeMismatch : {
+ email : "Por favor, introduzca una dirección de correo.",
+ url : "Por favor, introduzca una URL."
+ },
+ badInput : {
+ number : "Por favor ingresa un número",
+ date : "Por favor ingresa una fecha",
+ time : "Por favor ingresa una hora",
+ range : "Valor no válido",
+ "datetime-local" : "Por favor ingresa una fecha con una hora"
+ },
+ validatevalue : "aqui",
+ dependentValidation : "aqui",
+ tooLong : "Por favor ingresa como máximo {%maxlength} caracteres, tú has ingresado solo {%valueLen}.",
+ tooShort : "El mínimo de caracteres es {%minlength}, tú solo ingresaste {%valueLen}.",
+ patternMismatch : "{%title}",
+ valueMissing : {
+ defaultMessage : "Por favor, rellene este campo.",
+ checkbox : "Por favor, marque esta casilla si desea continuar.",
+ select : "Por favor, seleccione un elemento de la lista.",
+ radio : "Por favor, seleccione una de estas opciones."
+ },
+ rangeUnderflow : {
+ defaultMessage : "El valor debe ser superior o igual a {%min}.",
+ date : "El valor debe ser superior o igual a {%min}.",
+ time : "El valor debe ser superior o igual a {%min}.",
+ "datetime-local" : "El valor debe ser superior o igual a {%min}."
+ },
+ rangeOverflow : {
+ defaultMessage : "El valor debe ser inferior o igual a {%max}.",
+ date : "El valor debe ser inferior o igual a {%max}.",
+ time : "El valor debe ser inferior o igual a {%max}.",
+ "datetime-local" : "El valor debe inferior o igual a {%max}."
+ },
+ stepMismatch : "Valor no v\xe1lido"
+ }, webshims.formcfg.es = {
+ numberFormat : {
+ "." : ".",
+ "," : ","
+ },
+ numberSigns : ".",
+ dateSigns : "/",
+ timeSigns : ":. ",
+ dFormat : "/",
+ month : {
+ currentText : "Este mes"
+ },
+ patterns : {
+ d : "dd/mm/yy"
+ },
+ time : {
+ currentText : "Ahora"
+ },
+ date : {
+ closeText : "Cerrar",
+ clear : "Borrar",
+ prevText : "<Ant",
+ nextText : "Sig>",
+ currentText : "Hoy",
+ monthNames : [ "Enero", "Febrero", "Marzo", "Abril", "Mayo",
+ "Junio", "Julio", "Agosto", "Septiembre", "Octubre",
+ "Noviembre", "Diciembre" ],
+ monthNamesShort : [ "Ene", "Feb", "Mar", "Abr", "May", "Jun",
+ "Jul", "Ago", "Sep", "Oct", "Nov", "Dic" ],
+ dayNames : [ "Domingo", "Lunes", "Martes", "Mi\xe9rcoles",
+ "Jueves", "Viernes", "S\xe1bado" ],
+ dayNamesShort : [ "Dom", "Lun", "Mar", "Mi\xe9", "Juv", "Vie",
+ "S\xe1b" ],
+ dayNamesMin : [ "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "S\xe1" ],
+ weekHeader : "Sm",
+ firstDay : 1,
+ isRTL : !1,
+ showMonthAfterYear : !1,
+ yearSuffix : ""
+ }
+ };
\ No newline at end of file
diff --git a/js-webshim/dev/shims/i18n/formcfg-gl.js b/js-webshim/dev/shims/i18n/formcfg-gl.js
new file mode 100644
index 00000000..b5daf3c1
--- /dev/null
+++ b/js-webshim/dev/shims/i18n/formcfg-gl.js
@@ -0,0 +1,77 @@
+ webshims.validityMessages.gl = {
+ typeMismatch : {
+ email : "Por favor, introduzca unha dirección de correo.",
+ url : "Por favor, introduzca unha URL."
+ },
+ badInput : {
+ number : "Por favor ingresa un número",
+ date : "Por favor ingresa unha data",
+ time : "Por favor ingresa unha hora",
+ range : "Valor no válido",
+ "datetime-local" : "Por favor ingresa una data con una hora"
+ },
+ validatevalue : "aqui",
+ dependentValidation : "aqui",
+ tooLong : "Por favor ingresa como máximo {%maxlength} caracteres, ti ingresache só {%valueLen}.",
+ tooShort : "O mínimo de caracteres e {%minlength}, ti ingresache só {%valueLen}.",
+ patternMismatch : "{%title}",
+ valueMissing : {
+ defaultMessage : "Por favor, rechea este campo.",
+ checkbox : "Por favor, marque esta casilla se desexa continuar.",
+ select : "Por favor, seleccione un elemento da lista.",
+ radio : "Por favor, seleccione unha destas opciones."
+ },
+ rangeUnderflow : {
+ defaultMessage : "O valor debe ser superior ou igual a {%min}.",
+ date : "O valor debe ser superior ou igual a {%min}.",
+ time : "O valor debe ser superior ou igual a {%min}.",
+ "datetime-local" : "O valor debe superior ou igual a {%min}."
+ },
+ rangeOverflow : {
+ defaultMessage : "O valor debe ser inferior o igual a {%max}.",
+ date : "O valor debe ser inferior ou igual a {%max}.",
+ time : "O valor debe ser inferior ou igual a {%max}.",
+ "datetime-local" : "O valor debe ser inferior ou igual a {%max}."
+ },
+ stepMismatch : "Valor non v\xe1lido"
+ }, webshims.formcfg.gl = {
+ numberFormat : {
+ "." : ".",
+ "," : ","
+ },
+ numberSigns : ".",
+ dateSigns : "/",
+ timeSigns : ":. ",
+ dFormat : "/",
+ month : {
+ currentText : "Este mes"
+ },
+ patterns : {
+ d : "dd/mm/yy"
+ },
+ time : {
+ currentText : "Agora"
+ },
+ date : {
+ closeText : "Pechar",
+ clear : "Borrar",
+ prevText : "<Ant",
+ nextText : "Sig>",
+ currentText : "Hoxe",
+ monthNames : [ "Xaneiro", "Febreiro", "Marzo", "Abril", "Maio",
+ "Xunio", "Xulio", "Agosto", "Septembro", "Outubro",
+ "Novembro", "Decembro" ],
+ monthNamesShort : [ "Ene", "Feb", "Mar", "Abr", "May", "Jun",
+ "Jul", "Ago", "Sep", "Oct", "Nov", "Dic" ],
+ dayNames : [ "Domingo", "Lunes", "Martes", "Mi\xe9rcoles",
+ "Jueves", "Viernes", "S\xe1bado" ],
+ dayNamesShort : [ "Dom", "Lun", "Mar", "Mi\xe9", "Juv", "Vie",
+ "S\xe1b" ],
+ dayNamesMin : [ "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "S\xe1" ],
+ weekHeader : "Sm",
+ firstDay : 1,
+ isRTL : !1,
+ showMonthAfterYear : !1,
+ yearSuffix : ""
+ }
+ };
\ No newline at end of file
diff --git a/js-webshim/minified/shims/i18n/formcfg-gl.js b/js-webshim/minified/shims/i18n/formcfg-gl.js
new file mode 100644
index 00000000..b5daf3c1
--- /dev/null
+++ b/js-webshim/minified/shims/i18n/formcfg-gl.js
@@ -0,0 +1,77 @@
+ webshims.validityMessages.gl = {
+ typeMismatch : {
+ email : "Por favor, introduzca unha dirección de correo.",
+ url : "Por favor, introduzca unha URL."
+ },
+ badInput : {
+ number : "Por favor ingresa un número",
+ date : "Por favor ingresa unha data",
+ time : "Por favor ingresa unha hora",
+ range : "Valor no válido",
+ "datetime-local" : "Por favor ingresa una data con una hora"
+ },
+ validatevalue : "aqui",
+ dependentValidation : "aqui",
+ tooLong : "Por favor ingresa como máximo {%maxlength} caracteres, ti ingresache só {%valueLen}.",
+ tooShort : "O mínimo de caracteres e {%minlength}, ti ingresache só {%valueLen}.",
+ patternMismatch : "{%title}",
+ valueMissing : {
+ defaultMessage : "Por favor, rechea este campo.",
+ checkbox : "Por favor, marque esta casilla se desexa continuar.",
+ select : "Por favor, seleccione un elemento da lista.",
+ radio : "Por favor, seleccione unha destas opciones."
+ },
+ rangeUnderflow : {
+ defaultMessage : "O valor debe ser superior ou igual a {%min}.",
+ date : "O valor debe ser superior ou igual a {%min}.",
+ time : "O valor debe ser superior ou igual a {%min}.",
+ "datetime-local" : "O valor debe superior ou igual a {%min}."
+ },
+ rangeOverflow : {
+ defaultMessage : "O valor debe ser inferior o igual a {%max}.",
+ date : "O valor debe ser inferior ou igual a {%max}.",
+ time : "O valor debe ser inferior ou igual a {%max}.",
+ "datetime-local" : "O valor debe ser inferior ou igual a {%max}."
+ },
+ stepMismatch : "Valor non v\xe1lido"
+ }, webshims.formcfg.gl = {
+ numberFormat : {
+ "." : ".",
+ "," : ","
+ },
+ numberSigns : ".",
+ dateSigns : "/",
+ timeSigns : ":. ",
+ dFormat : "/",
+ month : {
+ currentText : "Este mes"
+ },
+ patterns : {
+ d : "dd/mm/yy"
+ },
+ time : {
+ currentText : "Agora"
+ },
+ date : {
+ closeText : "Pechar",
+ clear : "Borrar",
+ prevText : "<Ant",
+ nextText : "Sig>",
+ currentText : "Hoxe",
+ monthNames : [ "Xaneiro", "Febreiro", "Marzo", "Abril", "Maio",
+ "Xunio", "Xulio", "Agosto", "Septembro", "Outubro",
+ "Novembro", "Decembro" ],
+ monthNamesShort : [ "Ene", "Feb", "Mar", "Abr", "May", "Jun",
+ "Jul", "Ago", "Sep", "Oct", "Nov", "Dic" ],
+ dayNames : [ "Domingo", "Lunes", "Martes", "Mi\xe9rcoles",
+ "Jueves", "Viernes", "S\xe1bado" ],
+ dayNamesShort : [ "Dom", "Lun", "Mar", "Mi\xe9", "Juv", "Vie",
+ "S\xe1b" ],
+ dayNamesMin : [ "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "S\xe1" ],
+ weekHeader : "Sm",
+ firstDay : 1,
+ isRTL : !1,
+ showMonthAfterYear : !1,
+ yearSuffix : ""
+ }
+ };
\ No newline at end of file
diff --git a/src/polyfiller.js b/src/polyfiller.js
index 5be4df93..502b046d 100644
--- a/src/polyfiller.js
+++ b/src/polyfiller.js
@@ -1097,7 +1097,7 @@
webshims.validationMessages = webshims.validityMessages = {
langSrc: 'i18n/formcfg-',
- availableLangs: "ar ca cs el es fa fr he hi hu it ja lt nl no pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
+ availableLangs: "ar ca cs el es fa fr gl he hi hu it ja lt nl no pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
};
webshims.formcfg = $.extend({}, webshims.validationMessages);
diff --git a/src/polyfiller.js~ b/src/polyfiller.js~
new file mode 100644
index 00000000..5be4df93
--- /dev/null
+++ b/src/polyfiller.js~
@@ -0,0 +1,1416 @@
+(function (factory) {
+ if (typeof WSDEBUG === 'undefined') {
+ window.WSDEBUG = true;
+ }
+ var addAsync = function(){
+ if(!window.asyncWebshims){
+ window.asyncWebshims = {
+ cfg: [],
+ ready: []
+ };
+ }
+ };
+ var start = function(){
+ if(window.jQuery){
+ factory(jQuery);
+ factory = function(){return window.webshims;};
+ }
+ };
+
+
+ window.webshims = {
+ setOptions: function(){
+ addAsync();
+ window.asyncWebshims.cfg.push(arguments);
+ },
+
+ ready: function(){
+ addAsync();
+ window.asyncWebshims.ready.push(arguments);
+ },
+ activeLang: function(lang){
+ addAsync();
+ window.asyncWebshims.lang = lang;
+ },
+ polyfill: function(features){
+ addAsync();
+ window.asyncWebshims.polyfill = features;
+ },
+ _curScript: (function(){
+ var scripts, i, scriptUrl, match, regUrl;
+ //modern browsers: Chrome 29+, Firefox 4+
+ var currentScript = document.currentScript;
+
+ //in debug mode remove result to fully test fallback in all browsers
+ if(WSDEBUG){
+ currentScript = false;
+ }
+ if (!currentScript) {
+ //error trick: works in Safari, Chrome, Firefox, IE 10+
+ //idea found here: https://github.com/samyk/jiagra/
+ try {
+ throw(new Error(''));
+ } catch (e) {
+ //Safari has sourceURL
+ scriptUrl = (e.sourceURL || e.stack || '').split('\n');
+ regUrl = /(?:fil|htt|wid|abo|app|res)(.)+/i;
+
+ for(i = 0; i < scriptUrl.length; i++){
+ //extract scriptUrl from stack: this is dangerous! All browsers have different string patterns (pattern can even vary between different browser versions). Help to make it bulletproof!!!
+ if((match = scriptUrl[i].match(regUrl))){
+ scriptUrl = match[0].replace(/[\:\s\(]+[\d\:\)\(\s]+$/, '');
+ break;
+ }
+ }
+
+
+ }
+
+ scripts = document.scripts || document.getElementsByTagName('script');
+
+ //get script by URL or by readyState == 'interactive' (readySate is supported in IE10-)
+ //if this fails the last found script is set to the currentScript
+ for (i = 0; i < scripts.length; i++) {
+ if(scripts[i].getAttribute('src')){
+ currentScript = scripts[i];
+ if (scripts[i].readyState == 'interactive' || scriptUrl == scripts[i].src) {
+ if(WSDEBUG){
+ currentScript.wsFoundCurrent = true;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ return currentScript;
+ })()
+ };
+ window.webshim = window.webshims;
+
+
+ window.webshims.timer = setInterval(start, 0);
+ start();
+
+ if (typeof define === 'function' && define.amd) {
+ define('polyfiller', ['jquery'], factory);
+ }
+}(function($){
+ "use strict";
+ var firstRun, path;
+ var navigator = window.navigator;
+ var webshims = window.webshims;
+ var DOMSUPPORT = 'dom-support';
+ var special = $.event.special;
+ var emptyJ = $([]);
+
+ var asyncWebshims = window.asyncWebshims;
+ var support = {};
+ var Object = window.Object;
+ var addSource = function(text){
+ return text +"\n//# sourceURL="+this.url;
+ };
+ var getAutoEnhance = function(prop){
+ return !webCFG.enhanceAuto && prop == 'auto' ? false : prop;
+ };
+ var featureAlias = {
+ matchmedia: 'matchMedia',
+ xhr2: 'filereader',
+ promise: 'es6',
+ URL: 'url'
+ };
+ var supportCapture = 'capture' in create('input');
+
+ clearInterval(webshims.timer);
+ support.advancedObjectProperties = support.objectAccessor = support.ES5 = !!('create' in Object && 'seal' in Object);
+
+ if(support.ES5 && !('toJSON' in Date.prototype)){
+ support.ES5 = false;
+ }
+
+
+ path = ($.support.hrefNormalized === false) ? webshims._curScript.getAttribute("src", 4) : webshims._curScript.src;
+ path = path.split('?')[0].slice(0, path.lastIndexOf("/") + 1) + 'shims/';
+
+ function create(name){
+ return document.createElement(name);
+ }
+
+ $.extend(webshims, {
+ version: '1.15.6',
+
+ cfg: {
+ enhanceAuto: window.Audio && (!window.matchMedia || matchMedia('(min-device-width: 721px)').matches),
+ //addCacheBuster: false,
+ waitReady: true,
+// extendNative: false,
+ loadStyles: true,
+ wsdoc: document,
+ wspopover: {appendTo: 'auto', hideOnBlur: true},
+ ajax: {},
+ loadScript: function(src, success){
+ $.ajax($.extend({}, webCFG.ajax, {url: src, success: success, dataType: 'script', cache: true, global: false, dataFilter: addSource}));
+ },
+ basePath: path
+ },
+ support: support,
+ bugs: {},
+ /*
+ * some data
+ */
+ modules: {},
+ features: {},
+ featureList: [],
+ setOptions: function(name, opts){
+ if (typeof name == 'string' && arguments.length > 1) {
+ webCFG[name] = (!$.isPlainObject(opts)) ? opts : $.extend(true, webCFG[name] || {}, opts);
+ } else if (typeof name == 'object') {
+ $.extend(true, webCFG, name);
+ }
+ },
+ _getAutoEnhance: getAutoEnhance,
+ addPolyfill: function(name, cfg){
+ cfg = cfg || {};
+ var feature = cfg.f || name;
+ if (!webshimsFeatures[feature]) {
+ webshimsFeatures[feature] = [];
+ webshims.featureList.push(feature);
+ webCFG[feature] = {};
+ }
+
+ webshimsFeatures[feature].push(name);
+ cfg.options = $.extend(webCFG[feature], cfg.options);
+
+ addModule(name, cfg);
+ if (cfg.methodNames) {
+ $.each(cfg.methodNames, function(i, methodName){
+ webshims.addMethodName(methodName);
+ });
+ }
+ },
+ polyfill: (function(){
+ var loaded = {};
+ return function(features){
+ if(!features){
+ features = webshims.featureList;
+ WSDEBUG && webshims.warn('loading all features without specifing might be bad for performance');
+ }
+
+ if (typeof features == 'string') {
+ features = features.split(' ');
+ }
+
+ if(WSDEBUG){
+ for(var i = 0; i < features.length; i++){
+ if(loaded[features[i]]){
+ webshims.error(features[i] +' already loaded, you might want to use updatePolyfill instead? see: bit.ly/12BtXX3');
+ }
+ loaded[features[i]] = true;
+ }
+ }
+ return webshims._polyfill(features);
+ };
+ })(),
+ _polyfill: function(features){
+ var toLoadFeatures = [];
+ var hasFormsExt, needExtStyles;
+
+ if(!firstRun.run){
+ hasFormsExt = $.inArray('forms-ext', features) !== -1;
+ firstRun();
+ needExtStyles = (hasFormsExt && !modules["form-number-date-ui"].test()) || (!supportCapture && $.inArray('mediacapture', features) !== -1);
+
+ if(hasFormsExt && $.inArray('forms', features) == -1){
+ features.push('forms');
+ if(WSDEBUG){
+ webshims.warn('need to load forms feature to use forms-ext feature.');
+ }
+ }
+ if(webCFG.loadStyles){
+ loader.loadCSS('styles/shim'+(needExtStyles ? '-ext' : '')+'.css');
+ }
+ }
+
+
+ if (webCFG.waitReady) {
+ $.readyWait++;
+ onReady(features, function(){
+ $.ready(true);
+ });
+ }
+
+ $.each(features, function(i, feature){
+
+ feature = featureAlias[feature] || feature;
+
+ if(!webshimsFeatures[feature]){
+ WSDEBUG && webshims.error("could not find webshims-feature (aborted): "+ feature);
+ isReady(feature, true);
+ return;
+ }
+ if (feature !== webshimsFeatures[feature][0]) {
+ onReady(webshimsFeatures[feature], function(){
+ isReady(feature, true);
+ });
+ }
+ toLoadFeatures = toLoadFeatures.concat(webshimsFeatures[feature]);
+ });
+
+ loadList(toLoadFeatures);
+
+
+ $.each(features, function(i, feature){
+ var o = webCFG[feature];
+ if(!o){return;}
+ if(feature == 'mediaelement' && (o.replaceUI = getAutoEnhance(o.replaceUI))){
+ o.plugins.unshift('mediacontrols');
+ }
+ if(o.plugins && o.plugins.length){
+ loadList(webCFG[feature].plugins);
+ }
+ });
+ },
+
+ /*
+ * handle ready modules
+ */
+ reTest: (function(){
+ var resList;
+ var reTest = function(i, name){
+ var module = modules[name];
+ var readyName = name+'Ready';
+ if(module && !module.loaded && !( (module.test && $.isFunction(module.test) ) ? module.test([]) : module.test )){
+ if(special[readyName]){
+ delete special[readyName];
+ }
+ webshimsFeatures[module.f];
+
+ resList.push(name);
+ }
+ };
+ return function(moduleNames){
+ if(typeof moduleNames == 'string'){
+ moduleNames = moduleNames.split(' ');
+ }
+ resList = [];
+ $.each(moduleNames, reTest);
+ loadList(resList);
+ };
+ })(),
+ isReady: function(name, _set){
+
+ name = name + 'Ready';
+ if (_set) {
+ if (special[name] && special[name].add) {
+ return true;
+ }
+
+ special[name] = $.extend(special[name] || {}, {
+ add: function(details){
+ details.handler.call(this, name);
+ }
+ });
+ $(document).triggerHandler(name);
+ }
+ return !!(special[name] && special[name].add) || false;
+ },
+ ready: function(events, fn /*, _created*/){
+ var _created = arguments[2];
+ if (typeof events == 'string') {
+ events = events.split(' ');
+ }
+
+ if (!_created) {
+ events = $.map($.grep(events, function(evt){
+ return !isReady(evt);
+ }), function(evt){
+ return evt + 'Ready';
+ });
+ }
+ if (!events.length) {
+ fn($, webshims, window, document);
+ return;
+ }
+ var readyEv = events.shift(), readyFn = function(){
+ onReady(events, fn, true);
+ };
+
+ $(document).one(readyEv, readyFn);
+ },
+
+ /*
+ * basic DOM-/jQuery-Helpers
+ */
+
+
+ capturingEvents: function(names, _maybePrevented){
+ if (!document.addEventListener) {
+ return;
+ }
+ if (typeof names == 'string') {
+ names = [names];
+ }
+ $.each(names, function(i, name){
+ var handler = function(e){
+ e = $.event.fix(e);
+ if (_maybePrevented && webshims.capturingEventPrevented) {
+ webshims.capturingEventPrevented(e);
+ }
+ return $.event.dispatch.call(this, e);
+ };
+ special[name] = special[name] || {};
+ if (special[name].setup || special[name].teardown) {
+ return;
+ }
+ $.extend(special[name], {
+ setup: function(){
+ this.addEventListener(name, handler, true);
+ },
+ teardown: function(){
+ this.removeEventListener(name, handler, true);
+ }
+ });
+ });
+ },
+ register: function(name, fn){
+ var module = modules[name];
+ if (!module) {
+ webshims.error("can't find module: " + name);
+ return;
+ }
+ module.loaded = true;
+ var ready = function(){
+ fn($, webshims, window, document, undefined, module.options);
+ isReady(name, true);
+ };
+ if (module.d && module.d.length) {
+ onReady(module.d, ready);
+ } else {
+ ready();
+ }
+
+ },
+ c: {},
+ /*
+ * loader
+ */
+ loader: {
+
+ addModule: function(name, ext){
+ modules[name] = ext;
+ ext.name = ext.name || name;
+ if(!ext.c){
+ ext.c = [];
+ }
+ $.each(ext.c, function(i, comboname){
+ if(!webshims.c[comboname]){
+ webshims.c[comboname] = [];
+ }
+ webshims.c[comboname].push(name);
+ });
+ },
+ loadList: (function(){
+
+ var loadedModules = [];
+ var loadScript = function(src, names){
+ if (typeof names == 'string') {
+ names = [names];
+ }
+ $.merge(loadedModules, names);
+ loader.loadScript(src, false, names);
+ };
+
+ var noNeedToLoad = function(name, list){
+ if (isReady(name) || $.inArray(name, loadedModules) != -1) {
+ return true;
+ }
+ var module = modules[name];
+ var supported;
+ if (module) {
+ supported = (module.test && $.isFunction(module.test)) ? module.test(list) : module.test;
+ if (supported) {
+ isReady(name, true);
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ var setDependencies = function(module, list){
+ if (module.d && module.d.length) {
+ var addDependency = function(i, dependency){
+ if (!noNeedToLoad(dependency, list) && $.inArray(dependency, list) == -1) {
+ list.push(dependency);
+ }
+ };
+ $.each(module.d, function(i, dependency){
+ if (modules[dependency]) {
+ if(!modules[dependency].loaded){
+ addDependency(i, dependency);
+ }
+ }
+ else
+ if (webshimsFeatures[dependency]) {
+ $.each(webshimsFeatures[dependency], addDependency);
+ onReady(webshimsFeatures[dependency], function(){
+ isReady(dependency, true);
+ });
+ }
+ });
+ if (!module.noAutoCallback) {
+ module.noAutoCallback = true;
+ }
+ }
+ };
+
+ return function(list){
+ var module;
+ var loadCombos = [];
+ var i;
+ var len;
+ var foundCombo;
+ var loadCombo = function(j, combo){
+ foundCombo = combo;
+ $.each(webshims.c[combo], function(i, moduleName){
+ if($.inArray(moduleName, loadCombos) == -1 || $.inArray(moduleName, loadedModules) != -1){
+ foundCombo = false;
+ return false;
+ }
+ });
+ if(foundCombo){
+ loadScript('combos/'+foundCombo, webshims.c[foundCombo]);
+ return false;
+ }
+ };
+
+ //length of list is dynamically
+ for (i = 0; i < list.length; i++) {
+ module = modules[list[i]];
+ if (!module || noNeedToLoad(module.name, list)) {
+ if (WSDEBUG && !module) {
+ webshims.warn('could not find: ' + list[i]);
+ }
+ continue;
+ }
+ if (module.css && webCFG.loadStyles) {
+ loader.loadCSS(module.css);
+ }
+
+ if (module.loadInit) {
+ module.loadInit();
+ }
+
+
+ setDependencies(module, list);
+ if(!module.loaded){
+ loadCombos.push(module.name);
+ }
+ module.loaded = true;
+ }
+
+ for(i = 0, len = loadCombos.length; i < len; i++){
+ foundCombo = false;
+
+ module = loadCombos[i];
+
+ if($.inArray(module, loadedModules) == -1){
+ if(webCFG.debug != 'noCombo'){
+ $.each(modules[module].c, loadCombo);
+ }
+ if(!foundCombo){
+ loadScript(modules[module].src || module, module);
+ }
+ }
+ }
+ };
+ })(),
+
+ makePath: function(src){
+ if (src.indexOf('//') != -1 || src.indexOf('/') === 0) {
+ return src;
+ }
+
+ if (src.indexOf('.') == -1) {
+ src += '.js';
+ }
+ if (webCFG.addCacheBuster) {
+ src += webCFG.addCacheBuster;
+ }
+ return webCFG.basePath + src;
+ },
+
+ loadCSS: (function(){
+ var parent, loadedSrcs = {};
+ return function(src){
+ src = this.makePath(src);
+ if (loadedSrcs[src]) {
+ return;
+ }
+ parent = parent || $('link, style')[0] || $('script')[0];
+ loadedSrcs[src] = 1;
+ $('').insertBefore(parent).attr({
+ href: src
+ });
+ };
+ })(),
+
+ loadScript: (function(){
+ var loadedSrcs = {};
+ return function(src, callback, name, noShimPath){
+ if(!noShimPath){
+ src = loader.makePath(src);
+ }
+ if (loadedSrcs[src]) {return;}
+ var complete = function(){
+
+ if (callback) {
+ callback();
+ }
+
+ if (name) {
+ if (typeof name == 'string') {
+ name = name.split(' ');
+ }
+ $.each(name, function(i, name){
+ if (!modules[name]) {
+ return;
+ }
+ if (modules[name].afterLoad) {
+ modules[name].afterLoad();
+ }
+ isReady(!modules[name].noAutoCallback ? name : name + 'FileLoaded', true);
+ });
+
+ }
+ };
+
+ loadedSrcs[src] = 1;
+ webCFG.loadScript(src, complete, $.noop);
+ };
+ })()
+ }
+ });
+
+ /*
+ * shortcuts
+ */
+
+
+ var webCFG = webshims.cfg;
+ var webshimsFeatures = webshims.features;
+ var isReady = webshims.isReady;
+ var onReady = webshims.ready;
+ var addPolyfill = webshims.addPolyfill;
+ var modules = webshims.modules;
+ var loader = webshims.loader;
+ var loadList = loader.loadList;
+ var addModule = loader.addModule;
+ var bugs = webshims.bugs;
+ var removeCombos = [];
+ var importantLogs = {
+ warn: 1,
+ error: 1
+ };
+ var $fn = $.fn;
+ var video = create('video');
+
+ webshims.addMethodName = function(name){
+ name = name.split(':');
+ var prop = name[1];
+ if (name.length == 1) {
+ prop = name[0];
+ name = name[0];
+ } else {
+ name = name[0];
+ }
+
+ $fn[name] = function(){
+ return this.callProp(prop, arguments);
+ };
+ };
+
+ $fn.callProp = function(prop, args){
+ var ret;
+ if(!args){
+ args = [];
+ }
+ this.each(function(){
+ var fn = $.prop(this, prop);
+
+ if (fn && fn.apply) {
+ ret = fn.apply(this, args);
+ if (ret !== undefined) {
+ return false;
+ }
+ } else {
+ webshims.warn(prop+ " is not a method of "+ this);
+ }
+ });
+ return (ret !== undefined) ? ret : this;
+ };
+
+
+
+ webshims.activeLang = (function(){
+
+ if(!('language' in navigator)){
+ navigator.language = navigator.browserLanguage || '';
+ }
+ var curLang = $.attr(document.documentElement, 'lang') || navigator.language;
+ onReady('webshimLocalization', function(){
+ webshims.activeLang(curLang);
+ });
+ return function(lang){
+ if(lang){
+ if (typeof lang == 'string' ) {
+ curLang = lang;
+ } else if(typeof lang == 'object'){
+ var args = arguments;
+ var that = this;
+ onReady('webshimLocalization', function(){
+ webshims.activeLang.apply(that, args);
+ });
+ }
+ }
+ return curLang;
+ };
+ })();
+
+ webshims.errorLog = [];
+ $.each(['log', 'error', 'warn', 'info'], function(i, fn){
+ webshims[fn] = function(message){
+ if( (importantLogs[fn] && webCFG.debug !== false) || webCFG.debug){
+ webshims.errorLog.push(message);
+ if(window.console && console.log){
+ console[(console[fn]) ? fn : 'log'](message);
+ }
+ }
+ };
+ });
+
+ if(WSDEBUG){
+ if(!webshims._curScript.wsFoundCurrent){
+ webshims.error('Could not detect currentScript! Use basePath to set script path.');
+ }
+ }
+
+ /*
+ * jQuery-plugins for triggering dom updates can be also very usefull in conjunction with non-HTML5 DOM-Changes (AJAX)
+ * Example:
+ * webshim.addReady(function(context, insertedElement){
+ * $('div.tabs', context).add(insertedElement.filter('div.tabs')).tabs();
+ * });
+ *
+ * $.ajax({
+ * success: function(html){
+ * $('#main').htmlPolyfill(html);
+ * }
+ * });
+ */
+
+ (function(){
+ //Overwrite DOM-Ready and implement a new ready-method
+ $.isDOMReady = $.isReady;
+ var onReady = function(){
+
+ $.isDOMReady = true;
+ isReady('DOM', true);
+ setTimeout(function(){
+ isReady('WINDOWLOAD', true);
+ }, 9999);
+ };
+
+ firstRun = function(){
+ if(!firstRun.run){
+
+ if(webCFG.debug || (!('crossDomain' in webCFG.ajax) && location.protocol.indexOf('http'))){
+ webCFG.ajax.crossDomain = true;
+ }
+
+ if(WSDEBUG && $.mobile && ($.mobile.textinput || $.mobile.rangeslider || $.mobile.button)){
+ webshims.info('jQM textinput/rangeslider/button detected waitReady was set to false. Use webshims.ready("featurename") to script against polyfilled methods/properties');
+
+ if(!webCFG.readyEvt){
+ webshims.error('in a jQuery mobile enviroment: you should change the readyEvt to "pageinit".');
+ }
+
+ if(webCFG.waitReady){
+ webshims.error('in a jQuery mobile enviroment: you should change the waitReady to false.')
+ }
+ }
+
+ if (WSDEBUG && webCFG.waitReady && $.isReady) {
+ webshims.warn('Call webshims.polyfill before DOM-Ready or set waitReady to false.');
+ }
+
+ if(!$.isDOMReady && webCFG.waitReady){
+ var $Ready = $.ready;
+ $.ready = function(unwait){
+ if(unwait !== true && document.body){
+ onReady();
+ }
+ return $Ready.apply(this, arguments);
+ };
+ $.ready.promise = $Ready.promise;
+ }
+ if(webCFG.readyEvt){
+ $(document).one(webCFG.readyEvt, onReady);
+ } else {
+ $(onReady);
+ }
+ }
+ firstRun.run = true;
+ };
+
+ $(window).on('load', function(){
+ onReady();
+ setTimeout(function(){
+ isReady('WINDOWLOAD', true);
+ }, 9);
+ });
+
+ var readyFns = [];
+ var eachTrigger = function(){
+ if(this.nodeType == 1){
+ webshims.triggerDomUpdate(this);
+ }
+ };
+ $.extend(webshims, {
+ addReady: function(fn){
+ var readyFn = function(context, elem){
+ webshims.ready('DOM', function(){fn(context, elem);});
+ };
+ readyFns.push(readyFn);
+
+ if(webCFG.wsdoc){
+ readyFn(webCFG.wsdoc, emptyJ);
+ }
+ },
+ triggerDomUpdate: function(context){
+ if(!context || !context.nodeType){
+ if(context && context.jquery){
+ context.each(function(){
+ webshims.triggerDomUpdate(this);
+ });
+ }
+ return;
+ }
+ var type = context.nodeType;
+ if(type != 1 && type != 9){return;}
+ var elem = (context !== document) ? $(context) : emptyJ;
+ $.each(readyFns, function(i, fn){
+ fn(context, elem);
+ });
+ }
+ });
+
+ $fn.clonePolyfill = $fn.clone;
+
+ $fn.htmlPolyfill = function(a){
+ if(!arguments.length){
+ return $(this.clonePolyfill()).html();
+ }
+ var ret = $fn.html.call(this, a);
+ if(ret === this && $.isDOMReady){
+ this.each(eachTrigger);
+ }
+ return ret;
+ };
+
+ $fn.jProp = function(){
+ return this.pushStack($($fn.prop.apply(this, arguments) || []));
+ };
+
+ $.each(['after', 'before', 'append', 'prepend', 'replaceWith'], function(i, name){
+ $fn[name+'Polyfill'] = function(a){
+ a = $(a);
+ $fn[name].call(this, a);
+ if($.isDOMReady){
+ a.each(eachTrigger);
+ }
+ return this;
+ };
+
+ });
+
+ $.each(['insertAfter', 'insertBefore', 'appendTo', 'prependTo', 'replaceAll'], function(i, name){
+ $fn[name.replace(/[A-Z]/, function(c){return "Polyfill"+c;})] = function(){
+ $fn[name].apply(this, arguments);
+ if($.isDOMReady){
+ webshims.triggerDomUpdate(this);
+ }
+ return this;
+ };
+ });
+
+ $fn.updatePolyfill = function(){
+ if($.isDOMReady){
+ webshims.triggerDomUpdate(this);
+ }
+ return this;
+ };
+
+ $.each(['getNativeElement', 'getShadowElement', 'getShadowFocusElement'], function(i, name){
+ $fn[name] = function(){
+ return this.pushStack(this);
+ };
+ });
+
+ })();
+
+
+ if(WSDEBUG){
+ webCFG.debug = true;
+ }
+
+ if(Object.create){
+ webshims.objectCreate = function(proto, props, opts){
+ if(WSDEBUG && props){
+ webshims.error('second argument for webshims.objectCreate is only available with DOM support');
+ }
+ var o = Object.create(proto);
+ if(opts){
+ o.options = $.extend(true, {}, o.options || {}, opts);
+ opts = o.options;
+ }
+ if(o._create && $.isFunction(o._create)){
+ o._create(opts);
+ }
+ return o;
+ };
+ }
+
+
+
+
+ /*
+ * Start Features
+ */
+
+ /* general modules */
+ /* change path $.webshims.modules[moduleName].src */
+
+
+ addModule('swfmini', {
+ test: function(){
+ if(window.swfobject && !window.swfmini){
+ window.swfmini = window.swfobject;
+ }
+ return ('swfmini' in window);
+ },
+ c: [16, 7, 2, 8, 1, 12, 23]
+ });
+ modules.swfmini.test();
+
+ addModule('sizzle', {test: $.expr.filters});
+ /*
+ * polyfill-Modules
+ */
+
+ // webshims lib uses a of http://github.com/kriskowal/es5-shim/ to implement
+ addPolyfill('es5', {
+ test: !!(support.ES5 && Function.prototype.bind),
+ d: ['sizzle']
+ });
+
+ addPolyfill('dom-extend', {
+ f: DOMSUPPORT,
+ noAutoCallback: true,
+ d: ['es5'],
+ c: [16, 7, 2, 15, 30, 3, 8, 4, 9, 10, 25, 31, 34]
+ });
+
+ //
+
+ //
+
+ //
+
+ //
+
+ //
+
+ //
+
+
+ //
+
+ //
+
+
+ //')[0];
+
+ support.inputtypes = inputtypes;
+
+ $.each(['range', 'date', 'datetime-local', 'month', 'color', 'number'], function(i, type){
+ input.setAttribute('type', type);
+ inputtypes[type] = (input.type == type && (input.value = testValue) && input.value != testValue);
+ });
+
+ support.datalist = !!(('options' in create('datalist')) && window.HTMLDataListElement);
+
+ support[formvalidation] = ('checkValidity' in input);
+
+ support.fieldsetelements = ('elements' in fieldset);
+
+
+ if((support.fieldsetdisabled = ('disabled' in fieldset))){
+ try {
+ if(fieldset.querySelector(':invalid')){
+ fieldset.disabled = true;
+ tmp = !fieldset.querySelector(':invalid') && fieldset.querySelector(':disabled');
+ }
+ } catch(er){}
+ support.fieldsetdisabled = !!tmp;
+ }
+
+ if(support[formvalidation]){
+ bustedWidgetUi = !support.fieldsetdisabled || !support.fieldsetelements || !('value' in progress) || !('value' in output);
+ replaceBustedUI = bustedWidgetUi && (/Android/i).test(navigator.userAgent);
+ bustedValidity = window.opera || bugs.bustedValidity || bustedWidgetUi || !support.datalist;
+
+ if(!bustedValidity && inputtypes.number){
+ bustedValidity = true;
+ try {
+ input.type = 'number';
+ input.value = '';
+ input.stepUp();
+ bustedValidity = input.value != '1';
+ } catch(e){}
+ }
+
+ }
+
+ bugs.bustedValidity = bustedValidity;
+
+ formExtend = support[formvalidation] && !bustedValidity ? 'form-native-extend' : fShim;
+ initialFormTest = $.noop;
+ return false;
+ };
+ var typeTest = function(o){
+ var ret = true;
+ if(!o._types){
+ o._types = o.types.split(' ');
+ }
+ $.each(o._types, function(i, name){
+ if((name in inputtypes) && !inputtypes[name]){
+ ret = false;
+ return false;
+ }
+ });
+ return ret;
+ };
+
+
+ webshims.validationMessages = webshims.validityMessages = {
+ langSrc: 'i18n/formcfg-',
+ availableLangs: "ar ca cs el es fa fr he hi hu it ja lt nl no pl pt pt-BR pt-PT ru sv zh-CN zh-TW".split(' ')
+ };
+ webshims.formcfg = $.extend({}, webshims.validationMessages);
+
+ webshims.inputTypes = {};
+
+ addPolyfill('form-core', {
+ f: 'forms',
+ test: initialFormTest,
+ d: ['es5'],
+ options: {
+ placeholderType: 'value',
+ messagePopover: {},
+ list: {
+ popover: {
+ constrainWidth: true
+ }
+ },
+ iVal: {
+ sel: '.ws-validate',
+ handleBubble: 'hide',
+ recheckDelay: 400
+// ,fx: 'slide'
+ }
+ // ,customMessages: false,
+ // overridePlaceholder: false, // might be good for IE10
+ // replaceValidationUI: false
+ },
+ methodNames: ['setCustomValidity', 'checkValidity', 'setSelectionRange'],
+ c: [16, 7, 2, 8, 1, 15, 30, 3, 31]
+ });
+
+ formOptions = webCFG.forms;
+
+ addPolyfill('form-native-extend', {
+ f: 'forms',
+ test: function(toLoad){
+ initialFormTest();
+ return !support[formvalidation] || bustedValidity || $.inArray(fNuAPI, toLoad || []) == -1 || modules[fNuAPI].test();
+ },
+ d: ['form-core', DOMSUPPORT, 'form-message'],
+ c: [6, 5, 14, 29]
+ });
+
+ addPolyfill(fShim, {
+ f: 'forms',
+ test: function(){
+ initialFormTest();
+ return support[formvalidation] && !bustedValidity;
+ },
+ d: ['form-core', DOMSUPPORT, 'sizzle'],
+ c: [16, 15, 28]
+ });
+
+ addPolyfill(fShim+'2', {
+ f: 'forms',
+ test: function(){
+ initialFormTest();
+ return support[formvalidation] && !bustedWidgetUi;
+ },
+ d: [fShim],
+ c: [27]
+ });
+
+ addPolyfill('form-message', {
+ f: 'forms',
+ test: function(toLoad){
+ initialFormTest();
+ return !( formOptions.customMessages || !support[formvalidation] || bustedValidity || !modules[formExtend].test(toLoad) );
+ },
+ d: [DOMSUPPORT],
+ c: [16, 7, 15, 30, 3, 8, 4, 14, 28]
+ });
+
+
+ addPolyfill(fNuAPI, {
+ f: 'forms-ext',
+ options: {
+ types: 'date time range number'
+ },
+ test: function(){
+ initialFormTest();
+ var ret = !bustedValidity;
+
+ if(ret){
+ ret = typeTest(this.options);
+ }
+
+ return ret;
+ },
+ methodNames: ['stepUp', 'stepDown'],
+ d: ['forms', DOMSUPPORT],
+ c: [6, 5, 17, 14, 28, 29, 33]
+ });
+
+ addModule('range-ui', {
+ options: {},
+ noAutoCallback: true,
+ test: function(){
+ return !!$fn.rangeUI;
+ },
+ d: ['es5'],
+ c: [6, 5, 9, 10, 17, 11]
+ });
+
+ addPolyfill('form-number-date-ui', {
+ f: 'forms-ext',
+ test: function(){
+ var o = this.options;
+ o.replaceUI = getAutoEnhance(o.replaceUI);
+ initialFormTest();
+ //input widgets on old androids can't be trusted
+ if(!o.replaceUI && replaceBustedUI){
+ o.replaceUI = true;
+ }
+ return !o.replaceUI && typeTest(o);
+ },
+ d: ['forms', DOMSUPPORT, fNuAPI, 'range-ui'],
+ options: {
+ widgets: {
+ calculateWidth: true,
+ animate: true
+ }
+ },
+ c: [6, 5, 9, 10, 17, 11]
+ });
+
+ addPolyfill('form-datalist', {
+ f: 'forms',
+ test: function(){
+ initialFormTest();
+ if(replaceBustedUI){
+ formOptions.customDatalist = true;
+ }
+ return support.datalist && !formOptions.fD;
+ },
+ d: ['form-core', DOMSUPPORT],
+ c: [16, 7, 6, 2, 9, 15, 30, 31, 28, 33]
+ });
+ })();
+ //>
+
+ //
+
+ //
+
+ //
+
+ //
+
+
+ //>removeCombos<
+ addPolyfill('feature-dummy', {
+ test: true,
+ loaded: true,
+ c: removeCombos
+ });
+
+ webshims.$ = $;
+ $.webshims = webshims;
+ $.webshim = webshim;
+
+ webshims.callAsync = function(){
+ webshims.callAsync = $.noop;
+
+ if(asyncWebshims){
+ if(asyncWebshims.cfg){
+ if(!asyncWebshims.cfg.length){
+ asyncWebshims.cfg = [[asyncWebshims.cfg]];
+ }
+ $.each(asyncWebshims.cfg, function(i, cfg){
+ webshims.setOptions.apply(webshims, cfg);
+ });
+ }
+ if(asyncWebshims.ready){
+ $.each(asyncWebshims.ready, function(i, ready){
+ webshims.ready.apply(webshims, ready);
+ });
+ }
+ if(asyncWebshims.lang){
+ webshims.activeLang(asyncWebshims.lang);
+ }
+ if('polyfill' in asyncWebshims){
+ webshims.polyfill(asyncWebshims.polyfill);
+ }
+ }
+ webshims.isReady('jquery', true);
+ };
+
+ webshims.callAsync();
+ return webshims;
+}));
diff --git a/src/shims/i18n/formcfg-es.js b/src/shims/i18n/formcfg-es.js
index 8dcc4a60..0ab74e9f 100644
--- a/src/shims/i18n/formcfg-es.js
+++ b/src/shims/i18n/formcfg-es.js
@@ -1,65 +1,77 @@
-webshims.validityMessages.es = {
- "typeMismatch": {
- "email": "Por favor, introduzca una dirección de correo.",
- "url": "Por favor, introduzca una URL."
- },
- "badInput": {
- "number": "Valor no válido",
- "date": "Valor no válido",
- "time": "Valor no válido",
- "range": "Valor no válido",
- "datetime-local": "Valor no válido"
- },
- "tooLong": "Valor no válido",
- "patternMismatch": "Por favor, ajústese al formato solicitado: {%title}.",
- "valueMissing": {
- "defaultMessage": "Por favor, rellene este campo.",
- "checkbox": "Por favor, marque esta casilla si desea continuar.",
- "select": "Por favor, seleccione un elemento de la lista.",
- "radio": "Por favor, seleccione una de estas opciones."
- },
- "rangeUnderflow": {
- "defaultMessage": "El valor debe superior o igual a {%min}.",
- "date": "El valor debe superior o igual a {%min}.",
- "time": "El valor debe superior o igual a {%min}.",
- "datetime-local": "El valor debe superior o igual a {%min}."
- },
- "rangeOverflow": {
- "defaultMessage": "El valor debe inferior o igual a {%max}.",
- "date": "El valor debe inferior o igual a {%max}.",
- "time": "El valor debe inferior o igual a {%max}.",
- "datetime-local": "El valor debe inferior o igual a {%max}."
- },
- "stepMismatch": "Valor no válido"
-};
-webshims.formcfg.es = {
- numberFormat: {
- ".": ".",
- ",": ","
- },
- numberSigns: '.',
- dateSigns: '/',
- timeSigns: ":. ",
- dFormat: "/",
- patterns: {
- d: 'dd/mm/yy'
- },
- date: {
- closeText: 'Cerrar',
- prevText: '<Ant',
- nextText: 'Sig>',
- currentText: 'Hoy',
- monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
- 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
- monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
- 'Jul','Ago','Sep','Oct','Nov','Dic'],
- dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],
- dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],
- dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],
- weekHeader: 'Sm',
- firstDay: 1,
- isRTL: false,
- showMonthAfterYear: false,
- yearSuffix: ''
- }
-};
\ No newline at end of file
+ webshims.validityMessages.es = {
+ typeMismatch : {
+ email : "Por favor, introduzca una dirección de correo.",
+ url : "Por favor, introduzca una URL."
+ },
+ badInput : {
+ number : "Por favor ingresa un número",
+ date : "Por favor ingresa una fecha",
+ time : "Por favor ingresa una hora",
+ range : "Valor no válido",
+ "datetime-local" : "Por favor ingresa una fecha con una hora"
+ },
+ validatevalue : "aqui",
+ dependentValidation : "aqui",
+ tooLong : "Por favor ingresa como máximo {%maxlength} caracteres, tú has ingresado solo {%valueLen}.",
+ tooShort : "El mínimo de caracteres es {%minlength}, tú solo ingresaste {%valueLen}.",
+ patternMismatch : "{%title}",
+ valueMissing : {
+ defaultMessage : "Por favor, rellene este campo.",
+ checkbox : "Por favor, marque esta casilla si desea continuar.",
+ select : "Por favor, seleccione un elemento de la lista.",
+ radio : "Por favor, seleccione una de estas opciones."
+ },
+ rangeUnderflow : {
+ defaultMessage : "El valor debe ser superior o igual a {%min}.",
+ date : "El valor debe ser superior o igual a {%min}.",
+ time : "El valor debe ser superior o igual a {%min}.",
+ "datetime-local" : "El valor debe ser superior o igual a {%min}."
+ },
+ rangeOverflow : {
+ defaultMessage : "El valor debe ser inferior o igual a {%max}.",
+ date : "El valor debe ser inferior o igual a {%max}.",
+ time : "El valor debe ser inferior o igual a {%max}.",
+ "datetime-local" : "El valor debe inferior o igual a {%max}."
+ },
+ stepMismatch : "Valor no v\xe1lido"
+ }, webshims.formcfg.es = {
+ numberFormat : {
+ "." : ".",
+ "," : ","
+ },
+ numberSigns : ".",
+ dateSigns : "/",
+ timeSigns : ":. ",
+ dFormat : "/",
+ month : {
+ currentText : "Este mes"
+ },
+ patterns : {
+ d : "dd/mm/yy"
+ },
+ time : {
+ currentText : "Ahora"
+ },
+ date : {
+ closeText : "Cerrar",
+ clear : "Borrar",
+ prevText : "<Ant",
+ nextText : "Sig>",
+ currentText : "Hoy",
+ monthNames : [ "Enero", "Febrero", "Marzo", "Abril", "Mayo",
+ "Junio", "Julio", "Agosto", "Septiembre", "Octubre",
+ "Noviembre", "Diciembre" ],
+ monthNamesShort : [ "Ene", "Feb", "Mar", "Abr", "May", "Jun",
+ "Jul", "Ago", "Sep", "Oct", "Nov", "Dic" ],
+ dayNames : [ "Domingo", "Lunes", "Martes", "Mi\xe9rcoles",
+ "Jueves", "Viernes", "S\xe1bado" ],
+ dayNamesShort : [ "Dom", "Lun", "Mar", "Mi\xe9", "Juv", "Vie",
+ "S\xe1b" ],
+ dayNamesMin : [ "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "S\xe1" ],
+ weekHeader : "Sm",
+ firstDay : 1,
+ isRTL : !1,
+ showMonthAfterYear : !1,
+ yearSuffix : ""
+ }
+ };
\ No newline at end of file
diff --git a/src/shims/i18n/formcfg-gl.js b/src/shims/i18n/formcfg-gl.js
new file mode 100644
index 00000000..b5daf3c1
--- /dev/null
+++ b/src/shims/i18n/formcfg-gl.js
@@ -0,0 +1,77 @@
+ webshims.validityMessages.gl = {
+ typeMismatch : {
+ email : "Por favor, introduzca unha dirección de correo.",
+ url : "Por favor, introduzca unha URL."
+ },
+ badInput : {
+ number : "Por favor ingresa un número",
+ date : "Por favor ingresa unha data",
+ time : "Por favor ingresa unha hora",
+ range : "Valor no válido",
+ "datetime-local" : "Por favor ingresa una data con una hora"
+ },
+ validatevalue : "aqui",
+ dependentValidation : "aqui",
+ tooLong : "Por favor ingresa como máximo {%maxlength} caracteres, ti ingresache só {%valueLen}.",
+ tooShort : "O mínimo de caracteres e {%minlength}, ti ingresache só {%valueLen}.",
+ patternMismatch : "{%title}",
+ valueMissing : {
+ defaultMessage : "Por favor, rechea este campo.",
+ checkbox : "Por favor, marque esta casilla se desexa continuar.",
+ select : "Por favor, seleccione un elemento da lista.",
+ radio : "Por favor, seleccione unha destas opciones."
+ },
+ rangeUnderflow : {
+ defaultMessage : "O valor debe ser superior ou igual a {%min}.",
+ date : "O valor debe ser superior ou igual a {%min}.",
+ time : "O valor debe ser superior ou igual a {%min}.",
+ "datetime-local" : "O valor debe superior ou igual a {%min}."
+ },
+ rangeOverflow : {
+ defaultMessage : "O valor debe ser inferior o igual a {%max}.",
+ date : "O valor debe ser inferior ou igual a {%max}.",
+ time : "O valor debe ser inferior ou igual a {%max}.",
+ "datetime-local" : "O valor debe ser inferior ou igual a {%max}."
+ },
+ stepMismatch : "Valor non v\xe1lido"
+ }, webshims.formcfg.gl = {
+ numberFormat : {
+ "." : ".",
+ "," : ","
+ },
+ numberSigns : ".",
+ dateSigns : "/",
+ timeSigns : ":. ",
+ dFormat : "/",
+ month : {
+ currentText : "Este mes"
+ },
+ patterns : {
+ d : "dd/mm/yy"
+ },
+ time : {
+ currentText : "Agora"
+ },
+ date : {
+ closeText : "Pechar",
+ clear : "Borrar",
+ prevText : "<Ant",
+ nextText : "Sig>",
+ currentText : "Hoxe",
+ monthNames : [ "Xaneiro", "Febreiro", "Marzo", "Abril", "Maio",
+ "Xunio", "Xulio", "Agosto", "Septembro", "Outubro",
+ "Novembro", "Decembro" ],
+ monthNamesShort : [ "Ene", "Feb", "Mar", "Abr", "May", "Jun",
+ "Jul", "Ago", "Sep", "Oct", "Nov", "Dic" ],
+ dayNames : [ "Domingo", "Lunes", "Martes", "Mi\xe9rcoles",
+ "Jueves", "Viernes", "S\xe1bado" ],
+ dayNamesShort : [ "Dom", "Lun", "Mar", "Mi\xe9", "Juv", "Vie",
+ "S\xe1b" ],
+ dayNamesMin : [ "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "S\xe1" ],
+ weekHeader : "Sm",
+ firstDay : 1,
+ isRTL : !1,
+ showMonthAfterYear : !1,
+ yearSuffix : ""
+ }
+ };
\ No newline at end of file