// // Cookie Functions - Second Helping (21-Jan-96) // Written by: Bill Dortch, hIdaho Design // The following functions are released to the public domain. // // The Second Helping version of the cookie functions dispenses with // my encode and decode functions, in favor of JavaScript's new built-in // escape and unescape functions, which do more complete encoding, and // which are probably much faster. // // The new version also extends the SetCookie function, though in // a backward-compatible manner, so if you used the First Helping of // cookie functions as they were written, you will not need to change any // code, unless you want to take advantage of the new capabilities. // // The following changes were made to SetCookie: // // 1. The expires parameter is now optional - that is, you can omit // it instead of passing it null to expire the cookie at the end // of the current session. // // 2. An optional path parameter has been added. // // 3. An optional domain parameter has been added. // // 4. An optional secure parameter has been added. // // For information on the significance of these parameters, and // and on cookies in general, please refer to the official cookie // spec, at: // // http://www.netscape.com/newsref/std/cookie_spec.html // // // // Function to return the value of the cookie specified by "name". // name - String object containing the cookie name. // returns - String object containing the cookie value, or null if // the cookie does not exist. // function GetCookie (name) { var arg = name + "="; var alen = arg.length; var allcookies = document.cookie; var start = allcookies.indexOf(arg); if (start == -1) return null; start+=alen; var end = allcookies.indexOf(";",start); if (end == -1) end = allcookies.length; return allcookies.substring(start,end); } // // Function to create or update a cookie. // name - String object object containing the cookie name. // value - String object containing the cookie value. May contain // any valid string characters. // [expires] - Date object containing the expiration data of the cookie. If // omitted or null, expires the cookie at the end of the current session. // [path] - String object indicating the path for which the cookie is valid. // If omitted or null, uses the path of the calling document. // [domain] - String object indicating the domain for which the cookie is // valid. If omitted or null, uses the domain of the calling document. // [secure] - Boolean (true/false) value indicating whether cookie transmission // requires a secure channel (HTTPS). // // The first two parameters are required. The others, if supplied, must // be passed in the order listed above. To omit an unused optional field, // use null as a place holder. For example, to call SetCookie using name, // value and path, you would code: // // SetCookie ("myCookieName", "myCookieValue", null, "/"); // // Note that trailing omitted parameters do not require a placeholder. // // To set a secure cookie for path "/myPath", that expires after the // current session, you might code: // // SetCookie (myCookieVar, cookieValueVar, null, "/myPath", null, true); // function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : "/"; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } // Function to delete a cookie. (Sets expiration date to current date/time) // name - String object containing the cookie name // function DeleteCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 100); // This cookie is history var cval = GetCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } // Function to check a cookie. (Sets cookie to value if cookie is new.) // name - String object containing the cookie name // value - String object containing the new cookie value function CheckCookie (name,value) { if (value!=null) {SetCookie(name,value);} return GetCookie(name); } function MakeBoolean (value) { return (value!=null&&value=="true")?true:false; }