SOURCE CODE: Uize.Cookie

VIEW REFERENCE

/*______________
|       ______  |   U I Z E    J A V A S C R I P T    F R A M E W O R K
|     /      /  |   ---------------------------------------------------
|    /    O /   |    MODULE : Uize.Cookie Package
|   /    / /    |
|  /    / /  /| |    ONLINE : http://uize.com
| /____/ /__/_| | COPYRIGHT : (c)2005-2014 UIZE
|          /___ |   LICENSE : Available under MIT License or GNU General Public License
|_______________|             http://uize.com/license.html
*/

/* Module Meta Data
  type: Package
  importance: 2
  codeCompleteness: 100
  docCompleteness: 20
*/

/*?
  Introduction
    The =Uize.Cookie= module is a package under the =Uize= namespace, and provides a couple of methods for managing browser cookies.

    *DEVELOPERS:* `Chris van Rensburg`
*/

Uize.module ({
  name:'Uize.Cookie',
  builder:function () {
    'use strict';

    var
      /*** Variables for Scruncher Optimization ***/
        _undefined,
        _null = null
    ;

    return Uize.package ({
      setCookie:function (_name,_value,_path,_expiration) {
        if (_value === _undefined || _value == _null) {
          _value = '';
          _expiration = 'Mon, 1 Jan 1990 12:00:00 UTC';
        } else {
          if (_expiration === _undefined) {
            var _expirationDate = new Date;
            _expirationDate.setFullYear (_expirationDate.getFullYear () + 1);
            _expiration = _expirationDate.toGMTString ();
          }
        }
        document.cookie = escape (_name) + '=' + escape (_value) + ';' + ((_path !== _undefined && _path != _null) ? ('path=' + _path + ';') : '') + ((_expiration !== _null) ? ('expires=' + _expiration + ';') : '');
        /*?
          Static Methods
            Uize.Cookie.setCookie
              SYNTAX
              ...........................................................................
              Uize.Cookie.setCookie (cookieNameSTR,cookieValueSTR,pathSTR,expirationSTR);
              ...........................................................................

              VARIATIONS

              .............................................................
              Uize.Cookie.setCookie (cookieNameSTR,cookieValueSTR,pathSTR);
              .............................................................

              When no =expirationSTR= parameter is specified, the expiration will be set to one year from the time that the cookie value is set.

              .....................................................
              Uize.Cookie.setCookie (cookieNameSTR,cookieValueSTR);
              .....................................................

              When no =pathSTR= parameter is specified, then the path of the current page being used.

              ......................................
              Uize.Cookie.setCookie (cookieNameSTR);
              ......................................

              When only a =cookieNameSTR= parameter is specified, the cookie specified by that parameter will be cleared.
        */
      },

      getCookie:function (_name) {
        var
          _value = '',
          _cookieStr = document.cookie
        ;
        if (typeof _cookieStr == 'string') {
          _cookieStr = _cookieStr.replace (/ /g,'');
          for (
            var _cookieNo = -1, _cookies = _cookieStr.split (';'), _cookiesLength = _cookies.length;
            ++_cookieNo < _cookiesLength;
          ) {
            var _cookie = _cookies [_cookieNo].split ('=');
            if (unescape (_cookie [0]) == _name) {
              _value = (typeof _cookie [1] == 'string') ? unescape (_cookie [1]) : '';
              break;
            }
          }
        }
        return _value;
        /*?
          Static Methods
            Uize.Cookie.getCookie
              SYNTAX
              .......................................................
              cookieValueSTR = Uize.Cookie.getCookie (cookieNameSTR);
              .......................................................

              NOTES
              - if there is no cookie stored by the specified name, then an empty string will be returned
        */
      }
    });
  }
});