nl_tokens: This method will setup the storage engine . If the browser has support for it .
pl_tokens: 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 <mask> ; } catch ( e ) { // Ignore
   } } ) ; }