home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 January
/
Chip_2001-01_cd1.bin
/
firmy
/
Pohoda
/
www
/
Pohoda_files
/
_cookies.js
next >
Wrap
Text File
|
2000-10-25
|
6KB
|
107 lines
// Funkce konstruktor: vytvß°φ objekt cookie pro specifikovan²
// dokument, se specifikovan²m nßzvem a voliteln²mi atributy.
// Argumenty:
// document: objekt Document, pro kter² je cookie uchovßna. Povinn².
// name: °et∞zec, kter² specifikuje nßzev pro cookie. Povinn².
// hours: volitelnΘ Φφslo, kterΘ specifikuje poΦet hodin od nyn∞jÜka, kdy
// by platnost cookie m∞la vyprÜet.
// path: voliteln² °et∞zec, kter² specifikuje atribut cesty cookie.
// domain: voliteln² °et∞zec, kter² specifikuje atribut domΘny cookie.
// secure: volitelnß logickß hodnota, kterß, pokud je true, vy₧aduje zabezpeΦenφ cookie.
//
function cookie(document, name, hours, path, domain, secure)
{
// VÜechny p°eddefinovanΘ vlastnosti tohoto objektu zaΦφnajφ znakem $,
// aby se odliÜily od ostatnφch vlastnostφ, je₧ jsou hodnotami,
// kterΘ majφ b²t ulo₧eny v cookie.
this.$document = document;
this.$name = name;
if (hours)
this.$expiration = new Date((new Date()).getTime() + hours*3600000);
else this.$expiration = null;
if (path) this.$path = path; else this.$path = null;
if (domain) this.$domain = domain; else this.$domain = null;
if (secure) this.$secure = true; else this.$secure = false;
}
// Tato funkce je metoda store() objektu cookie.
function _cookie_store()
{
// ZaprvΘ,cyklujte p°es vlastnosti objektu cookie
// a dejte dohromady hodnotu cookie. Proto₧e cookies
// pou₧φvajφ znamΘnka rovnß se a st°ednφky jako separßtory, my
// pro jednotlivΘ stavovΘ prom∞nnΘ, kterΘ uklßdßme v rßmci
// jednΘ hodnoty cookie, pou₧ijeme dvojteΦky a znaky &.
// VÜimn∞te si, ₧e na hodnotu ka₧dΘ stavovΘ
// prom∞nnΘ, v p°φpad∞, ₧e obsahuje interpunkci nebo
// jinΘ nepovolenΘ znaky, pou₧ijeme funkci escape.
var cookieval = "";
for(var prop in this) {
// Ignorujte vlastnosti s nßzvy, kterΘ zaΦφnajφ znakem $, a takΘ metody.
if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function'))
continue;
if (cookieval != "") cookieval += '&';
cookieval += prop + ':' + escape(this[prop]);
}
// Nynφ, kdy₧ mßme hodnotu cookie, dejme dohromady
// kompletnφ °et∞zec cookie, kter² zahrnuje nßzev a r∙znΘ
// atributy, kterΘ byly specifikovßny, kdy₧ byl vytvo°en objekt cookie.
var cookie = this.$name + '=' + cookieval;
if (this.$expiration)
cookie += '; expires=' + this.$expiration.toGMTString();
if (this.$path) cookie += '; path=' + this.$path;
if (this.$domain) cookie += '; domain=' + this.$domain;
if (this.$secure) cookie += '; secure';
//Nynφ cookie ulo₧φme nastavenφm magickΘ vlastnosti Document.cookie.
this.$document.cookie = cookie;
}
// Tato funkce je metoda load() objektu cookie.
function _cookie_load()
{
// ZaprvΘ obstarßme seznam vÜech cookies, krerΘ nßle₧φ k tomuto dokumentu.
// Ud∞lßme to tak, ₧e p°eΦteme magickou vlastnost Document.cookie.
var allcookies = this.$document.cookie;
if (allcookies == "") return false;
// Nynφ z tohoto seznamu extrahujeme pouze pojmenovanou cookie.
var start = allcookies.indexOf(this.$name + '=');
if (start == -1) return false; // cookie pro tuto strßnku nenφ definivßna
start += this.$name.length + 1; // p°eskoΦφme nßzev a znamΘnko rovnß se
var end = allcookies.indexOf(';', start);
if (end == -1) end = allcookies.length;
var cookieval = allcookies.substring(start, end);
// Nynφ, kdy₧ jsme extrahovali hodnotu pojmenovanΘ cookie, musφme
// tuto hodnotu rozd∞lit na nßzvy a hodnoty individußlnφch stavov²ch
// prom∞nn²ch. Pßry name/value (nßzev/hodnota) jsou jeden od druhΘho
// odd∞leny znaΦkami & a individußlnφ nßzvy a hodnoty jsou vzßjemn∞ odd∞leny
// dvojteΦkami. K separaci pou₧φvßme metodu split.
var a = cookieval.split('&'); // rozd∞lenφ na pole pßru nßzev/hodnota
for(var i=0; i < a.length; i++) // rozd∞lenφ ka₧dΘho pßru na pole
a[i] = a [i].split(':');
// Nynφ jsme separovali hodnotu cookie, nastavili vÜechny nßzvy a hodnoty
// stavov²ch prom∞nn²ch v tomto objektu cookie. VÜimn∞te si, ₧e jsme provedli
// unescape() hodnoty vlastnosti, proto₧e jsme volali ecsape() kdy₧ jsme ji uklßdali.,
for(var i = 0; i < a.length; i++) {
this[a[i][0]] = unescape(a[i][1]);
}
// Jsme hotovi, tak₧e vrßtφme ·sp∞Ün² k≤d.
return true;
}
// Tato funkce je metoda remove() objektu cookie.
function _cookie_remove()
{
var cookie;
cookie = this.$name + '=';
if (this.$path) cookie += '; path=' + this.$path;
if (this.$domain) cookie += '; domain=' + this.$domain;
cookie += '; expires=Fri, 02-Jan-1970 00:00:00 GMT';
this.$document.cookie = cookie;
}
// Vytvo°φ formßlnφ objekt cookie, abychom mohli pou₧φt prototypov² objekt k zaΦlen∞nφ
// v²Üe uveden²ch funkcφ do metod.
new cookie();
cookie.prototype.store = _cookie_store;
cookie.prototype.load = _cookie_load;
cookie.prototype.remove = _cookie_remove;
//=========================================================================================
// V²Üe uveden² k≤d je definicφ t°φdy cookie.