vendor/assets/javascripts/webshims/shims/json-storage.js in webshims-rails-0.4.5 vs vendor/assets/javascripts/webshims/shims/json-storage.js in webshims-rails-0.4.6
- old
+ new
@@ -1,308 +1,308 @@
-
-//JSON
-(function(){
-if('JSON'in window && JSON.stringify && JSON.parse){return;}
-
-if(!this.JSON){this.JSON={};}(function(){function f(n){return n<10?'0'+n:n;}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof rep==='function'){value=rep.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':value});};}if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}return reviver.call(holder,key,value);}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}throw new SyntaxError('JSON.parse');};}}());
-
-})();
-
-//modified version from http://gist.github.com/350433
-//using window.name for sessionStorage and cookies for localStorage
-
-(function () {
-var $ = jQuery;
-if ('localStorage' in window && 'sessionStorage' in window) {
- $.webshims.isReady('json-storage', true);
- return;
-}
-
-
-var storageNameError = function(name){
- if(name && name.indexOf && name.indexOf(';') != -1){
- setTimeout(function(){
- $.webshims.warn("Bad key for localStorage: ; in localStorage. name was: "+ name);
- }, 0);
- }
-};
-var winData;
-var selfWindow = false;
-$.each(['opener', 'top', 'parent'], function(i, name){
- try {
- winData = window[name];
- if(winData && 'name' in winData){
- var test = winData.name;
- return false;
- } else {
- winData = false;
- }
- } catch(e){
- winData = false;
- }
-});
-if(!winData){
- winData = window;
- selfWindow = true;
-}
-var setWindowData = function(data){
- if(!selfWindow){
- try {
- window.name = data;
- } catch(e){}
- }
- try {
- winData.name = data;
- } catch(e){
- winData = window;
- selfWindow = true;
- }
-};
-var getWindowData = function(){
- var data;
- if(!selfWindow){
- try {
- data = window.name;
- } catch(e){}
- }
- if(!data){
- try {
- data = winData.name;
- } catch(e){
- winData = window;
- selfWindow = true;
- }
- }
- return data;
-};
-var Storage = function (type) {
- function createCookie(name, value, days) {
- var date, expires;
-
- if (days) {
- date = new Date();
- date.setTime(date.getTime()+(days*24*60*60*1000));
- expires = "; expires="+date.toGMTString();
- } else {
- expires = "";
- }
- document.cookie = name+"="+value+expires+"; path=/";
- }
-
- function readCookie(name) {
- var nameEQ = name + "=",
- ca = document.cookie.split(';'),
- i, c;
-
- for (i=0; i < ca.length; i++) {
- c = ca[i];
- while (c.charAt(0)==' ') {
- c = c.substring(1,c.length);
- }
-
- if (c.indexOf(nameEQ) === 0) {
- return c.substring(nameEQ.length,c.length);
- }
- }
- return null;
- }
-
- function setData(data) {
- data = JSON.stringify(data);
- if (type == 'session') {
- setWindowData(data);
- } else {
- createCookie('localStorage', data, 365);
- }
- }
-
- function clearData() {
- if (type == 'session') {
- setWindowData('');
- } else {
- createCookie('localStorage', '', 365);
- }
- }
-
- function getData() {
- var data;
- if(type == 'session'){
- data = getWindowData();
- } else {
- data = readCookie('localStorage');
- }
- if(data){
- try {
- data = JSON.parse(data);
- } catch(e){
- data = {};
- }
- }
- return data || {};
- }
-
-
- // initialise if there's already data
- var data = getData();
-
- return {
- clear: function () {
- data = {};
- clearData();
- },
- getItem: function (key) {
- return (key in data) ? data[key] : null;
- },
- key: function (i) {
- // not perfect, but works
- var ctr = 0;
- for (var k in data) {
- if (ctr == i) {
- return k;
- } else {
- ctr++;
- }
- }
- return null;
- },
- removeItem: function (key) {
- delete data[key];
- setData(data);
- },
- setItem: function (key, value) {
- storageNameError(key);
- data[key] = value+''; // forces the value to a string
- setData(data);
- }
- };
-};
-
-
-
-if (!('sessionStorage' in window)) {window.sessionStorage = new Storage('session');}
-
-
-
-(function(){
- var swfTimer;
- var emptyString = '(empty string)+1287520303738';
- var runStart;
- var shim;
- var localStorageSwfCallback = function(type){
- clearTimeout(swfTimer);
-
- if(window.localStorage && (type != 'swf' || (shim && shim.key))){
- $.webshims.isReady('json-storage', true);
- return;
- }
-
- if(type === 'swf'){
- shim = document.getElementById('swflocalstorageshim');
- //brute force flash getter
- if( !shim || typeof shim.GetVariable == 'undefined' ){
- shim = document.swflocalstorageshim;
- }
- if( !shim || typeof shim.GetVariable == 'undefined'){
- shim = window.localstorageshim;
- }
-
- if(shim && typeof shim.GetVariable !== 'undefined'){
- window.localStorage = {};
-
- window.localStorage.clear = function(){
- if(shim.clear){shim.clear();}
- };
- window.localStorage.key = function(i){
- if(shim.key){shim.key(i);}
- };
- window.localStorage.removeItem = function(name){
- if(shim.removeItem){shim.removeItem(name);}
- };
-
- window.localStorage.setItem = function(name, val){
- storageNameError(name);
- val += '';
- if(!val){
- val = emptyString;
- }
- if(shim.setItem){
- shim.setItem(name, val);
- }
- };
- window.localStorage.getItem = function(name){
- if(!shim.getItem){
- return null;
- }
- var val = shim.getItem(name, val);
- if(val == emptyString){
- val = '';
- }
- return val;
- };
- $.webshims.log('flash-localStorage was implemented');
- }
- }
- if(!('localStorage' in window)){
- window.localStorage = new Storage('local');
- $.webshims.warn('implement cookie-localStorage');
- }
-
- $.webshims.isReady('json-storage', true);
- };
- var storageCFG = $.webshims.cfg['json-storage'];
- $.webshims.swfLocalStorage = {
- show: function(){
- if(storageCFG.exceededMessage){
- $('#swflocalstorageshim-wrapper').prepend('<div class="polyfill-exceeded-message">'+ storageCFG.exceededMessage +'</div>');
- }
- $('#swflocalstorageshim-wrapper').css({
- top: $(window).scrollTop() + 20,
- left: ($(window).width() / 2) - ($('#swflocalstorageshim-wrapper').outerWidth() / 2)
- });
-
- },
- hide: function(success){
- $('#swflocalstorageshim-wrapper')
- .css({top: '', left: ''})
- .find('div.polyfill-exceeded-message')
- .remove()
- ;
- if(!success){
- var err = new Error('DOMException: QUOTA_EXCEEDED_ERR');
- err.code = 22;
- err.name = 'DOMException';
- throw(err);
- }
- },
- isReady: localStorageSwfCallback
- };
-
-// $.webshims.swfLocalStorage.storageEvent = function(newVal, oldVal, url){
-//
-// };
-
- $.webshims.ready('DOM swfobject', function(){
- if(runStart || (('localStorage' in window) && document.getElementById('swflocalstorageshim')) ){return;}
- runStart = true;
- if(window.swfobject && swfobject.hasFlashPlayerVersion('8.0.0')){
- $('body')[$.browser.mozilla ? 'after' : 'append']('<div id="swflocalstorageshim-wrapper"><div id="swflocalstorageshim" /></div>');
- swfobject.embedSWF($.webshims.cfg.basePath +'swf/localStorage.swf' +($.webshims.cfg.addCacheBuster || ''), 'swflocalstorageshim', '295', '198', '8.0.0', '', {allowscriptaccess: 'always'}, {name: 'swflocalstorageshim'}, function(e){
- if(!e.success && !window.localStorage){
- localStorageSwfCallback();
- }
- });
- clearTimeout(swfTimer);
- swfTimer = setTimeout(function(){
- if(!('localStorage' in window)){
- $.webshims.warn('Add your development-directory to the local-trusted security sandbox: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html');
- }
- localStorageSwfCallback();
- }, (location.protocol.indexOf('file') === 0) ? 500 : 9999);
- } else {
- localStorageSwfCallback();
- }
- });
-})();
-
-
-})();
-
+
+//JSON
+(function(){
+if('JSON'in window && JSON.stringify && JSON.parse){return;}
+
+if(!this.JSON){this.JSON={};}(function(){function f(n){return n<10?'0'+n:n;}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof rep==='function'){value=rep.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':value});};}if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}return reviver.call(holder,key,value);}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}throw new SyntaxError('JSON.parse');};}}());
+
+})();
+
+//modified version from http://gist.github.com/350433
+//using window.name for sessionStorage and cookies for localStorage
+
+(function () {
+var $ = jQuery;
+if ('localStorage' in window && 'sessionStorage' in window) {
+ $.webshims.isReady('json-storage', true);
+ return;
+}
+
+
+var storageNameError = function(name){
+ if(name && name.indexOf && name.indexOf(';') != -1){
+ setTimeout(function(){
+ $.webshims.warn("Bad key for localStorage: ; in localStorage. name was: "+ name);
+ }, 0);
+ }
+};
+var winData;
+var selfWindow = false;
+$.each(['opener', 'top', 'parent'], function(i, name){
+ try {
+ winData = window[name];
+ if(winData && 'name' in winData){
+ var test = winData.name;
+ return false;
+ } else {
+ winData = false;
+ }
+ } catch(e){
+ winData = false;
+ }
+});
+if(!winData){
+ winData = window;
+ selfWindow = true;
+}
+var setWindowData = function(data){
+ if(!selfWindow){
+ try {
+ window.name = data;
+ } catch(e){}
+ }
+ try {
+ winData.name = data;
+ } catch(e){
+ winData = window;
+ selfWindow = true;
+ }
+};
+var getWindowData = function(){
+ var data;
+ if(!selfWindow){
+ try {
+ data = window.name;
+ } catch(e){}
+ }
+ if(!data){
+ try {
+ data = winData.name;
+ } catch(e){
+ winData = window;
+ selfWindow = true;
+ }
+ }
+ return data;
+};
+var Storage = function (type) {
+ function createCookie(name, value, days) {
+ var date, expires;
+
+ if (days) {
+ date = new Date();
+ date.setTime(date.getTime()+(days*24*60*60*1000));
+ expires = "; expires="+date.toGMTString();
+ } else {
+ expires = "";
+ }
+ document.cookie = name+"="+value+expires+"; path=/";
+ }
+
+ function readCookie(name) {
+ var nameEQ = name + "=",
+ ca = document.cookie.split(';'),
+ i, c;
+
+ for (i=0; i < ca.length; i++) {
+ c = ca[i];
+ while (c.charAt(0)==' ') {
+ c = c.substring(1,c.length);
+ }
+
+ if (c.indexOf(nameEQ) === 0) {
+ return c.substring(nameEQ.length,c.length);
+ }
+ }
+ return null;
+ }
+
+ function setData(data) {
+ data = JSON.stringify(data);
+ if (type == 'session') {
+ setWindowData(data);
+ } else {
+ createCookie('localStorage', data, 365);
+ }
+ }
+
+ function clearData() {
+ if (type == 'session') {
+ setWindowData('');
+ } else {
+ createCookie('localStorage', '', 365);
+ }
+ }
+
+ function getData() {
+ var data;
+ if(type == 'session'){
+ data = getWindowData();
+ } else {
+ data = readCookie('localStorage');
+ }
+ if(data){
+ try {
+ data = JSON.parse(data);
+ } catch(e){
+ data = {};
+ }
+ }
+ return data || {};
+ }
+
+
+ // initialise if there's already data
+ var data = getData();
+
+ return {
+ clear: function () {
+ data = {};
+ clearData();
+ },
+ getItem: function (key) {
+ return (key in data) ? data[key] : null;
+ },
+ key: function (i) {
+ // not perfect, but works
+ var ctr = 0;
+ for (var k in data) {
+ if (ctr == i) {
+ return k;
+ } else {
+ ctr++;
+ }
+ }
+ return null;
+ },
+ removeItem: function (key) {
+ delete data[key];
+ setData(data);
+ },
+ setItem: function (key, value) {
+ storageNameError(key);
+ data[key] = value+''; // forces the value to a string
+ setData(data);
+ }
+ };
+};
+
+
+
+if (!('sessionStorage' in window)) {window.sessionStorage = new Storage('session');}
+
+
+
+(function(){
+ var swfTimer;
+ var emptyString = '(empty string)+1287520303738';
+ var runStart;
+ var shim;
+ var localStorageSwfCallback = function(type){
+ clearTimeout(swfTimer);
+
+ if(window.localStorage && (type != 'swf' || (shim && shim.key))){
+ $.webshims.isReady('json-storage', true);
+ return;
+ }
+
+ if(type === 'swf'){
+ shim = document.getElementById('swflocalstorageshim');
+ //brute force flash getter
+ if( !shim || typeof shim.GetVariable == 'undefined' ){
+ shim = document.swflocalstorageshim;
+ }
+ if( !shim || typeof shim.GetVariable == 'undefined'){
+ shim = window.localstorageshim;
+ }
+
+ if(shim && typeof shim.GetVariable !== 'undefined'){
+ window.localStorage = {};
+
+ window.localStorage.clear = function(){
+ if(shim.clear){shim.clear();}
+ };
+ window.localStorage.key = function(i){
+ if(shim.key){shim.key(i);}
+ };
+ window.localStorage.removeItem = function(name){
+ if(shim.removeItem){shim.removeItem(name);}
+ };
+
+ window.localStorage.setItem = function(name, val){
+ storageNameError(name);
+ val += '';
+ if(!val){
+ val = emptyString;
+ }
+ if(shim.setItem){
+ shim.setItem(name, val);
+ }
+ };
+ window.localStorage.getItem = function(name){
+ if(!shim.getItem){
+ return null;
+ }
+ var val = shim.getItem(name, val);
+ if(val == emptyString){
+ val = '';
+ }
+ return val;
+ };
+ $.webshims.log('flash-localStorage was implemented');
+ }
+ }
+ if(!('localStorage' in window)){
+ window.localStorage = new Storage('local');
+ $.webshims.warn('implement cookie-localStorage');
+ }
+
+ $.webshims.isReady('json-storage', true);
+ };
+ var storageCFG = $.webshims.cfg['json-storage'];
+ $.webshims.swfLocalStorage = {
+ show: function(){
+ if(storageCFG.exceededMessage){
+ $('#swflocalstorageshim-wrapper').prepend('<div class="polyfill-exceeded-message">'+ storageCFG.exceededMessage +'</div>');
+ }
+ $('#swflocalstorageshim-wrapper').css({
+ top: $(window).scrollTop() + 20,
+ left: ($(window).width() / 2) - ($('#swflocalstorageshim-wrapper').outerWidth() / 2)
+ });
+
+ },
+ hide: function(success){
+ $('#swflocalstorageshim-wrapper')
+ .css({top: '', left: ''})
+ .find('div.polyfill-exceeded-message')
+ .remove()
+ ;
+ if(!success){
+ var err = new Error('DOMException: QUOTA_EXCEEDED_ERR');
+ err.code = 22;
+ err.name = 'DOMException';
+ throw(err);
+ }
+ },
+ isReady: localStorageSwfCallback
+ };
+
+// $.webshims.swfLocalStorage.storageEvent = function(newVal, oldVal, url){
+//
+// };
+
+ $.webshims.ready('DOM swfobject', function(){
+ if(runStart || (('localStorage' in window) && document.getElementById('swflocalstorageshim')) ){return;}
+ runStart = true;
+ if(window.swfobject && swfobject.hasFlashPlayerVersion('8.0.0')){
+ $('body')[$.browser.mozilla ? 'after' : 'append']('<div id="swflocalstorageshim-wrapper"><div id="swflocalstorageshim" /></div>');
+ swfobject.embedSWF($.webshims.cfg.basePath +'swf/localStorage.swf' +($.webshims.cfg.addCacheBuster || ''), 'swflocalstorageshim', '295', '198', '8.0.0', '', {allowscriptaccess: 'always'}, {name: 'swflocalstorageshim'}, function(e){
+ if(!e.success && !window.localStorage){
+ localStorageSwfCallback();
+ }
+ });
+ clearTimeout(swfTimer);
+ swfTimer = setTimeout(function(){
+ if(!('localStorage' in window)){
+ $.webshims.warn('Add your development-directory to the local-trusted security sandbox: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html');
+ }
+ localStorageSwfCallback();
+ }, (location.protocol.indexOf('file') === 0) ? 500 : 9999);
+ } else {
+ localStorageSwfCallback();
+ }
+ });
+})();
+
+
+})();
+