webgui/www/extras/yui-ext/docs/output/State.js.html
JT Smith cfd09a5cb6 upgraded to yui 0.12.0
upgraded to yui-ext 0.33 rc2
2006-11-28 02:23:34 +00:00

265 lines
No EOL
49 KiB
HTML

<html><head><title>State.js</title><link rel="stylesheet" type="text/css" href="../style.css" media="screen"/></head><body><div class="hl-main"><pre><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">namespace</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">ext.state</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-default">;
</span><span class="hl-comment">/**
* @class YAHOO.ext.state.Provider
* Abstract base class for provider implementations. This class provides methods
* for encoding and decoding &lt;b&gt;typed&lt;/b&gt; variables including dates and defines the
* Provider interface.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">ext</span><span class="hl-default">.</span><span class="hl-identifier">state</span><span class="hl-default">.</span><span class="hl-identifier">Provider</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(){
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">Provider</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @event statechange
* Fires when a state change occurs.
* @param {Provider} this
* @param {String} key The state key which was changed
* @param {String} value The encoded value for the state
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">events</span><span class="hl-code"> = </span><span class="hl-brackets">{
</span><span class="hl-quotes">'</span><span class="hl-string">statechange</span><span class="hl-quotes">'</span><span class="hl-code">: </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">statechange</span><span class="hl-quotes">'</span><span class="hl-brackets">)
}</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-default">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">extendX</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">Provider</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Observable</span><span class="hl-code">, </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* Get the current value for a key.
* @param {String} name
* @param {Mixed} defaultValue
* @return {Mixed}
*/
</span><span class="hl-identifier">get</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">defaultValue</span><span class="hl-brackets">){
</span><span class="hl-reserved">return typeof this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-brackets">]</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> ?
</span><span class="hl-identifier">defaultValue</span><span class="hl-code"> : </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Clear a value from the state.
*/
</span><span class="hl-identifier">clear</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">){
</span><span class="hl-reserved">delete this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">fireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">statechange</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Set the value for a key.
* @param {String} name
* @param {Mixed} value
*/
</span><span class="hl-identifier">set</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">){
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">value</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">fireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">statechange</span><span class="hl-quotes">'</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Decodes a string previously encoded with {@link #encodeValue}.
* @param {String} value
* @return {Mixed} The value
*/
</span><span class="hl-identifier">decodeValue</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">cookie</span><span class="hl-brackets">){
</span><span class="hl-reserved">var </span><span class="hl-identifier">re</span><span class="hl-code"> = </span><span class="hl-quotes">/</span><span class="hl-string">^(a|n|d|b|s|o)\:(.*)$</span><span class="hl-quotes">/</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">matches</span><span class="hl-code"> = </span><span class="hl-identifier">re</span><span class="hl-code">.</span><span class="hl-identifier">exec</span><span class="hl-brackets">(</span><span class="hl-identifier">unescape</span><span class="hl-brackets">(</span><span class="hl-identifier">cookie</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">matches</span><span class="hl-code"> || !</span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]) </span><span class="hl-reserved">return</span><span class="hl-code">; </span><span class="hl-comment">// non state cookie
</span><span class="hl-reserved">var </span><span class="hl-identifier">type</span><span class="hl-code"> = </span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">v</span><span class="hl-code"> = </span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-brackets">){
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">n</span><span class="hl-quotes">'</span><span class="hl-code">:
</span><span class="hl-reserved">return </span><span class="hl-identifier">parseFloat</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">d</span><span class="hl-quotes">'</span><span class="hl-code">:
</span><span class="hl-reserved">return new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-builtin">Date</span><span class="hl-code">.</span><span class="hl-identifier">parse</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">b</span><span class="hl-quotes">'</span><span class="hl-code">:
</span><span class="hl-reserved">return </span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">1</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">a</span><span class="hl-quotes">'</span><span class="hl-code">:
</span><span class="hl-reserved">var </span><span class="hl-identifier">all</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">values</span><span class="hl-code"> = </span><span class="hl-identifier">v</span><span class="hl-code">.</span><span class="hl-identifier">split</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">^</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">len</span><span class="hl-code"> = </span><span class="hl-identifier">values</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> &lt; </span><span class="hl-identifier">len</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">){
</span><span class="hl-identifier">all</span><span class="hl-code">.</span><span class="hl-identifier">push</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">decodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">values</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]))
}
</span><span class="hl-reserved">return </span><span class="hl-identifier">all</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">'</span><span class="hl-string">o</span><span class="hl-quotes">'</span><span class="hl-code">:
</span><span class="hl-reserved">var </span><span class="hl-identifier">all</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">values</span><span class="hl-code"> = </span><span class="hl-identifier">v</span><span class="hl-code">.</span><span class="hl-identifier">split</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">^</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">len</span><span class="hl-code"> = </span><span class="hl-identifier">values</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> &lt; </span><span class="hl-identifier">len</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">){
</span><span class="hl-reserved">var </span><span class="hl-identifier">kv</span><span class="hl-code"> = </span><span class="hl-identifier">values</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">split</span><span class="hl-brackets">(</span><span class="hl-quotes">'</span><span class="hl-string">=</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">all</span><span class="hl-brackets">[</span><span class="hl-identifier">kv</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]]</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">decodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">kv</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return </span><span class="hl-identifier">all</span><span class="hl-code">;
</span><span class="hl-reserved">default</span><span class="hl-code">:
</span><span class="hl-reserved">return </span><span class="hl-identifier">v</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Encode a value including type information.
* @param {Mixed} value
* @return {String}
*/
</span><span class="hl-identifier">encodeValue</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">){
</span><span class="hl-reserved">var </span><span class="hl-identifier">enc</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">v</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">number</span><span class="hl-quotes">'</span><span class="hl-brackets">){
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">n:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">v</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">v</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">boolean</span><span class="hl-quotes">'</span><span class="hl-brackets">){
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">b:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-code"> ? </span><span class="hl-quotes">'</span><span class="hl-string">1</span><span class="hl-quotes">'</span><span class="hl-code"> : </span><span class="hl-quotes">'</span><span class="hl-string">0</span><span class="hl-quotes">'</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-identifier">v </span><span class="hl-reserved">instanceof </span><span class="hl-builtin">Date</span><span class="hl-brackets">){
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">d:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">v</span><span class="hl-code">.</span><span class="hl-identifier">toGMTString</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-identifier">v </span><span class="hl-reserved">instanceof </span><span class="hl-builtin">Array</span><span class="hl-brackets">){
</span><span class="hl-reserved">var </span><span class="hl-identifier">flat</span><span class="hl-code"> = </span><span class="hl-quotes">''</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">len</span><span class="hl-code"> = </span><span class="hl-identifier">v</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> &lt; </span><span class="hl-identifier">len</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">){
</span><span class="hl-identifier">flat</span><span class="hl-code"> += </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">encodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code"> != </span><span class="hl-identifier">len</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">) </span><span class="hl-identifier">flat</span><span class="hl-code"> += </span><span class="hl-quotes">'</span><span class="hl-string">^</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">a:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">flat</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-reserved">else if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">v</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">object</span><span class="hl-quotes">'</span><span class="hl-brackets">){
</span><span class="hl-reserved">var </span><span class="hl-identifier">flat</span><span class="hl-code"> = </span><span class="hl-quotes">''</span><span class="hl-code">;
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">key </span><span class="hl-reserved">in </span><span class="hl-identifier">v</span><span class="hl-brackets">){
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">v</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">function</span><span class="hl-quotes">'</span><span class="hl-brackets">){
</span><span class="hl-identifier">flat</span><span class="hl-code"> += </span><span class="hl-identifier">key</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">=</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">encodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">v</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">])</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">^</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">o:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">flat</span><span class="hl-code">.</span><span class="hl-identifier">substring</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">flat</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-reserved">else</span><span class="hl-brackets">{
</span><span class="hl-identifier">enc</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">s:</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">v</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return </span><span class="hl-identifier">escape</span><span class="hl-brackets">(</span><span class="hl-identifier">enc</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
})</span><span class="hl-default">;
</span><span class="hl-comment">/**
* @class YAHOO.ext.state.Manager
* This is the global state manager. By default all components that are &quot;state aware&quot; check this class
* for state information if you don't pass them a custom state provider. In order for this class
* to be useful, it must be initialized with a provider when your application initializes.
&lt;pre&gt;&lt;code&gt;
// in your initialization function
init : function(){
YAHOO.ext.state.Manager.setProvider(new YAHOO.ext.state.CookieProvider());
...
// supposed you have a {@link YAHOO.ext.BorderLayout}
var layout = new YAHOO.ext.BorderLayout(...);
layout.restoreState();
// or a {YAHOO.ext.BasicDialog}
var dialog = new YAHOO.ext.BasicDialog(...);
dialog.restoreState();
&lt;/code&gt;&lt;/pre&gt;
* @singleton
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">ext</span><span class="hl-default">.</span><span class="hl-identifier">state</span><span class="hl-default">.</span><span class="hl-identifier">Manager</span><span class="hl-default"> = </span><span class="hl-reserved">new function</span><span class="hl-brackets">(){
</span><span class="hl-reserved">var </span><span class="hl-identifier">provider</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">Provider</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* Configures the default provider for your application.
* @param {Provider} stateProvider
*/
</span><span class="hl-identifier">setProvider</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">stateProvider</span><span class="hl-brackets">){
</span><span class="hl-identifier">provider</span><span class="hl-code"> = </span><span class="hl-identifier">stateProvider</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Get the current value for a key.
* @param {String} name
* @param {Mixed} defaultValue
* @return {Mixed}
*/
</span><span class="hl-identifier">get</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">defaultValue</span><span class="hl-brackets">){
</span><span class="hl-reserved">return </span><span class="hl-identifier">provider</span><span class="hl-code">.</span><span class="hl-identifier">get</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">defaultValue</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Set the value for a key.
* @param {String} name
* @param {Mixed} value
*/
</span><span class="hl-identifier">set</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">){
</span><span class="hl-identifier">provider</span><span class="hl-code">.</span><span class="hl-identifier">set</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Clear a value from the state.
*/
</span><span class="hl-identifier">clear</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">){
</span><span class="hl-identifier">provider</span><span class="hl-code">.</span><span class="hl-identifier">clear</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Gets the currently configured provider.
* @return {Provider}
*/
</span><span class="hl-identifier">getProvider</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(){
</span><span class="hl-reserved">return </span><span class="hl-identifier">provider</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-brackets">}()</span><span class="hl-default">;
</span><span class="hl-comment">/**
* @class YAHOO.ext.state.CookieProvider
* @extends YAHOO.ext.state.Provider
* The default Provider implementation. The example below includes all valid configuration options and their
* default values.
&lt;pre&gt;&lt;code&gt;
var cp = new YAHOO.ext.state.CookieProvider({
path: '/',
expires: new Date(new Date().getTime()+(1000*60*60*24*7)); //7 days
domain: null,
secure: false
})
YAHOO.ext.state.Manager.setProvider(cp);
&lt;/code&gt;&lt;/pre&gt;
* @constructor
* Create a new CookieProvider
* @param {Object} config The configuration object
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">ext</span><span class="hl-default">.</span><span class="hl-identifier">state</span><span class="hl-default">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">config</span><span class="hl-brackets">){
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">constructor</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">/</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">expires</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">()</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-brackets">(</span><span class="hl-number">1000</span><span class="hl-code">*</span><span class="hl-number">60</span><span class="hl-code">*</span><span class="hl-number">60</span><span class="hl-code">*</span><span class="hl-number">24</span><span class="hl-code">*</span><span class="hl-number">7</span><span class="hl-brackets">))</span><span class="hl-code">; </span><span class="hl-comment">//7 days
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">secure</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Config</span><span class="hl-code">.</span><span class="hl-identifier">apply</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">config</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">readCookies</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-default">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">extendX</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">Provider</span><span class="hl-code">, </span><span class="hl-brackets">{
</span><span class="hl-identifier">set</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">){
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">value</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> || </span><span class="hl-identifier">value</span><span class="hl-code"> === </span><span class="hl-reserved">null</span><span class="hl-brackets">){
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clear</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">return</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">setCookie</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">set</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-identifier">clear</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">){
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearCookie</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">ext</span><span class="hl-code">.</span><span class="hl-identifier">state</span><span class="hl-code">.</span><span class="hl-identifier">CookieProvider</span><span class="hl-code">.</span><span class="hl-identifier">superclass</span><span class="hl-code">.</span><span class="hl-identifier">clear</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-identifier">name</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-identifier">readCookies</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(){
</span><span class="hl-reserved">var </span><span class="hl-identifier">cookies</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">c</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">cookie</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">re</span><span class="hl-code"> = </span><span class="hl-quotes">/</span><span class="hl-string">\s?(.*?)=(.*?);</span><span class="hl-quotes">/g</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">matches</span><span class="hl-code">;
</span><span class="hl-reserved">while</span><span class="hl-brackets">((</span><span class="hl-identifier">matches</span><span class="hl-code"> = </span><span class="hl-identifier">re</span><span class="hl-code">.</span><span class="hl-identifier">exec</span><span class="hl-brackets">(</span><span class="hl-identifier">c</span><span class="hl-brackets">))</span><span class="hl-code"> != </span><span class="hl-reserved">null</span><span class="hl-brackets">){
</span><span class="hl-reserved">var </span><span class="hl-identifier">name</span><span class="hl-code"> = </span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">value</span><span class="hl-code"> = </span><span class="hl-identifier">matches</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">name</span><span class="hl-code">.</span><span class="hl-identifier">substring</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">3</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">ys-</span><span class="hl-quotes">'</span><span class="hl-brackets">){
</span><span class="hl-identifier">cookies</span><span class="hl-brackets">[</span><span class="hl-identifier">name</span><span class="hl-code">.</span><span class="hl-identifier">substr</span><span class="hl-brackets">(</span><span class="hl-number">3</span><span class="hl-brackets">)]</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">decodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">return </span><span class="hl-identifier">cookies</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-identifier">setCookie</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">){
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">cookie</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">ys-</span><span class="hl-quotes">&quot;</span><span class="hl-code">+ </span><span class="hl-identifier">name</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">=</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">encodeValue</span><span class="hl-brackets">(</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code"> +
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">expires</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">; expires=</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">expires</span><span class="hl-code">.</span><span class="hl-identifier">toGMTString</span><span class="hl-brackets">()))</span><span class="hl-code"> +
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">; path=</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-brackets">))</span><span class="hl-code"> +
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">; domain=</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-brackets">))</span><span class="hl-code"> +
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">secure</span><span class="hl-code"> == </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;</span><span class="hl-string">; secure</span><span class="hl-quotes">&quot;</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-identifier">clearCookie</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">name</span><span class="hl-brackets">){
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">cookie</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">ys-</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-identifier">name</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">=null; expires=Thu, 01-Jan-70 00:00:01 GMT</span><span class="hl-quotes">&quot;</span><span class="hl-code"> +
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">; path=</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">path</span><span class="hl-brackets">))</span><span class="hl-code"> +
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-code"> == </span><span class="hl-reserved">null</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-code"> : </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">; domain=</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">domain</span><span class="hl-brackets">))</span><span class="hl-code"> +
</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">secure</span><span class="hl-code"> == </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;</span><span class="hl-string">; secure</span><span class="hl-quotes">&quot;</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
})</span><span class="hl-default">;
</span></pre></div><hr>Copyright &copy; 2006 Jack Slocum. All rights reserved.</body></html>