1 /**
  2 *@namespace Sfdc.canvas.cookies
  3 *@name Sfdc.canvas.cookies
  4 */
  5 (function ($$) {
  6 
  7     "use strict";
  8 
  9     var module =  (function() {
 10 
 11         function isSecure()
 12         {
 13             return window.location.protocol === 'https:';
 14         }
 15 
 16         /**
 17        * @name Sfdc.canvas.cookies#set
 18        * @function
 19        * @description Create a cookie
 20        * @param {String} name Cookie name
 21        * @param {String} value Cookie value
 22        * @param {Integer} [days] Number of days for the cookie to remain active.
 23                 If not provided, the cookie never expires
 24        */
 25        function set(name, value, days) {
 26            var expires = "", date;
 27            if (days) {
 28                date = new Date();
 29                date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
 30                expires = "; expires=" + date.toGMTString();
 31            }
 32            else {
 33                expires = "";
 34            }
 35            document.cookie = name + "=" + value + expires + "; path=/" +  ((isSecure() === true) ? "; secure" : "");
 36        }
 37        
 38        /**
 39        * @name Sfdc.canvas.cookies#get
 40        * @function
 41        * @description Get the cookie with the specified name
 42        * @param {String} name The name of the cookie to retrieve
 43        * @returns The value of the cookie if the name is found, otherwise null
 44        */
 45        function get(name) {
 46            var nameEQ, ca, c, i;
 47 
 48            if ($$.isUndefined(name)) {
 49                return document.cookie.split(';');
 50            }
 51 
 52            nameEQ = name + "=";
 53            ca = document.cookie.split(';');
 54            for (i = 0; i < ca.length; i += 1) {
 55                c = ca[i];
 56                while (c.charAt(0) === ' ') {c = c.substring(1, c.length);}
 57                if (c.indexOf(nameEQ) === 0) {
 58                    return c.substring(nameEQ.length, c.length);
 59                }
 60            }
 61            return null;
 62        }
 63        
 64        /**
 65        * @name Sfdc.canvas.cookies#remove
 66        * @function
 67        * @description Remove the specified cookie by setting the expiry date to one day ago
 68        * @param {String} name The name of the cookie to remove.
 69        */
 70        function remove(name) {
 71            set(name, "", -1);
 72        }
 73 
 74        return {
 75             set : set,
 76             get : get,
 77             remove : remove
 78         };
 79     }());
 80 
 81 
 82     $$.module('Sfdc.canvas.cookies', module);
 83 
 84 }(Sfdc.canvas));