home *** CD-ROM | disk | FTP | other *** search
- // 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.
-