whole_func_string: function(ed) {
  			var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";
  
  			self.key = PLUGIN_NAME + ed.id;
  
  			// Loop though each storage engine type until we find one that works
  			tinymce.each([
  				function() {
  					// Try HTML5 Local Storage
  					if (localStorage) {
  						localStorage.setItem(testKey, testVal);
  
  						if (localStorage.getItem(testKey) === testVal) {
  							localStorage.removeItem(testKey);
  
  							return localStorage;
  						}
  					}
  				},
  
  				function() {
  					// Try HTML5 Session Storage
  					if (sessionStorage) {
  						sessionStorage.setItem(testKey, testVal);
  
  						if (sessionStorage.getItem(testKey) === testVal) {
  							sessionStorage.removeItem(testKey);
  
  							return sessionStorage;
  						}
  					}
  				},
  
  				function() {
  					// Try IE userData
  					if (tinymce.isIE) {
  						ed.getElement().style.behavior = "url('#default#userData')";
  
  						// Fake localStorage on old IE
  						return {
  							autoExpires : TRUE,
  
  							setItem : function(key, value) {
  								var userDataElement = ed.getElement();
  
  								userDataElement.setAttribute(key, value);
  								userDataElement.expires = self.getExpDate();
  
  								try {
  									userDataElement.save("TinyMCE");
  								} catch (e) {
  									// Ignore, saving might fail if "Userdata Persistence" is disabled in IE
  								}
  							},
  
  							getItem : function(key) {
  								var userDataElement = ed.getElement();
  
  								try {
  									userDataElement.load("TinyMCE");
  									return userDataElement.getAttribute(key);
  								} catch (e) {
  									// Ignore, loading might fail if "Userdata Persistence" is disabled in IE
  									return null;
  								}
  							},
  
  							removeItem : function(key) {
  								ed.getElement().removeAttribute(key);
  							}
  						};
  					}
  				},
  			], function(setup) {
  				// Try executing each function to find a suitable storage engine
  				try {
  					self.storage = setup();
  
  					if (self.storage)
  						return false;
  				} catch (e) {
  					// Ignore
  				}
  			});
  		}
func_code_string: function(ed) {
  			var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";
  
  			self.key = PLUGIN_NAME + ed.id;
  
  			// Loop though each storage engine type until we find one that works
  			tinymce.each([
  				function() {
  					// Try HTML5 Local Storage
  					if (localStorage) {
  						localStorage.setItem(testKey, testVal);
  
  						if (localStorage.getItem(testKey) === testVal) {
  							localStorage.removeItem(testKey);
  
  							return localStorage;
  						}
  					}
  				},
  
  				function() {
  					// Try HTML5 Session Storage
  					if (sessionStorage) {
  						sessionStorage.setItem(testKey, testVal);
  
  						if (sessionStorage.getItem(testKey) === testVal) {
  							sessionStorage.removeItem(testKey);
  
  							return sessionStorage;
  						}
  					}
  				},
  
  				function() {
  					// Try IE userData
  					if (tinymce.isIE) {
  						ed.getElement().style.behavior = "url('#default#userData')";
  
  						// Fake localStorage on old IE
  						return {
  							autoExpires : TRUE,
  
  							setItem : function(key, value) {
  								var userDataElement = ed.getElement();
  
  								userDataElement.setAttribute(key, value);
  								userDataElement.expires = self.getExpDate();
  
  								try {
  									userDataElement.save("TinyMCE");
  								} catch (e) {
  									// Ignore, saving might fail if "Userdata Persistence" is disabled in IE
  								}
  							},
  
  							getItem : function(key) {
  								var userDataElement = ed.getElement();
  
  								try {
  									userDataElement.load("TinyMCE");
  									return userDataElement.getAttribute(key);
  								} catch (e) {
  									// Ignore, loading might fail if "Userdata Persistence" is disabled in IE
  									return null;
  								}
  							},
  
  							removeItem : function(key) {
  								ed.getElement().removeAttribute(key);
  							}
  						};
  					}
  				},
  			], function(setup) {
  				// Try executing each function to find a suitable storage engine
  				try {
  					self.storage = setup();
  
  					if (self.storage)
  						return false;
  				} catch (e) {
  					// Ignore
  				}
  			});
  		}
func_documentation_string: This method will setup the storage engine. If the browser has support for it.
  
  @method setupStorage