home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / firmy / Pohoda / www / Pohoda_files / _cookies.js next >
Text File  |  2000-10-25  |  6KB  |  107 lines

  1. // Funkce konstruktor: vytvß°φ objekt cookie pro specifikovan² 
  2. // dokument, se specifikovan²m nßzvem a voliteln²mi atributy.
  3. // Argumenty:
  4. //     document: objekt Document, pro kter² je cookie uchovßna. Povinn².
  5. //     name: °et∞zec, kter² specifikuje nßzev pro cookie. Povinn².   
  6. //     hours: volitelnΘ Φφslo, kterΘ specifikuje poΦet hodin od nyn∞jÜka, kdy
  7. //              by platnost cookie m∞la vyprÜet.
  8. //     path: voliteln² °et∞zec, kter² specifikuje atribut cesty cookie.
  9. //     domain: voliteln² °et∞zec, kter² specifikuje atribut domΘny cookie.
  10. //     secure: volitelnß logickß hodnota, kterß, pokud je true, vy₧aduje zabezpeΦenφ cookie.
  11. //
  12. function cookie(document, name, hours, path, domain, secure)
  13. {
  14.        // VÜechny p°eddefinovanΘ vlastnosti tohoto objektu zaΦφnajφ znakem $,
  15.        // aby se odliÜily od ostatnφch vlastnostφ, je₧ jsou hodnotami,
  16.        // kterΘ majφ b²t ulo₧eny v cookie.
  17.        this.$document = document;
  18.        this.$name = name;
  19.        if (hours)
  20.                  this.$expiration = new Date((new Date()).getTime() + hours*3600000);  
  21.        else this.$expiration = null;
  22.        if (path) this.$path = path; else this.$path = null;
  23.        if (domain) this.$domain = domain; else this.$domain = null;
  24.        if (secure) this.$secure = true; else this.$secure = false;
  25. }
  26. // Tato funkce je metoda store() objektu cookie.
  27. function _cookie_store()
  28. {
  29.        // ZaprvΘ,cyklujte p°es vlastnosti objektu cookie
  30.        // a dejte dohromady hodnotu cookie. Proto₧e cookies
  31.        // pou₧φvajφ znamΘnka rovnß se a st°ednφky jako separßtory, my
  32.        // pro jednotlivΘ stavovΘ prom∞nnΘ, kterΘ uklßdßme v rßmci
  33.        // jednΘ hodnoty cookie, pou₧ijeme dvojteΦky a znaky &.
  34.        // VÜimn∞te si, ₧e na hodnotu ka₧dΘ stavovΘ
  35.        // prom∞nnΘ, v p°φpad∞, ₧e obsahuje interpunkci nebo
  36.        // jinΘ nepovolenΘ znaky, pou₧ijeme funkci escape.
  37.        var cookieval = "";
  38.        for(var prop in this) {
  39.                  // Ignorujte vlastnosti s nßzvy, kterΘ zaΦφnajφ znakem $, a takΘ metody.
  40.                  if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function'))
  41.                            continue;
  42.                  if (cookieval != "") cookieval += '&';
  43.                  cookieval += prop + ':' + escape(this[prop]);
  44.        }
  45.        // Nynφ, kdy₧ mßme hodnotu cookie, dejme dohromady
  46.        // kompletnφ °et∞zec cookie, kter² zahrnuje nßzev a r∙znΘ
  47.        // atributy, kterΘ byly specifikovßny, kdy₧ byl vytvo°en objekt cookie.
  48.        var cookie = this.$name + '=' + cookieval;
  49.        if (this.$expiration)
  50.                  cookie += '; expires=' + this.$expiration.toGMTString();
  51.        if (this.$path) cookie += '; path=' + this.$path;
  52.        if (this.$domain) cookie += '; domain=' + this.$domain;
  53.        if (this.$secure) cookie += '; secure';
  54.        //Nynφ cookie ulo₧φme nastavenφm magickΘ vlastnosti Document.cookie.   
  55.        this.$document.cookie = cookie;
  56. }
  57. // Tato funkce je metoda load() objektu cookie.
  58. function _cookie_load()
  59. {
  60.        // ZaprvΘ obstarßme seznam vÜech cookies, krerΘ nßle₧φ k tomuto dokumentu.
  61.        // Ud∞lßme to tak, ₧e p°eΦteme magickou vlastnost Document.cookie.
  62.        var allcookies = this.$document.cookie;
  63.        if (allcookies == "") return false;
  64.        // Nynφ z tohoto seznamu extrahujeme pouze pojmenovanou cookie.
  65.        var start = allcookies.indexOf(this.$name + '=');
  66.        if (start == -1) return false;          // cookie pro tuto strßnku nenφ definivßna
  67.        start += this.$name.length + 1;         // p°eskoΦφme nßzev a znamΘnko rovnß se
  68.        var end = allcookies.indexOf(';', start);
  69.        if (end == -1) end = allcookies.length;
  70.        var cookieval = allcookies.substring(start, end);
  71.        // Nynφ, kdy₧ jsme extrahovali hodnotu pojmenovanΘ cookie, musφme
  72.        // tuto hodnotu rozd∞lit na nßzvy a hodnoty individußlnφch stavov²ch
  73.        // prom∞nn²ch. Pßry name/value (nßzev/hodnota) jsou jeden od druhΘho
  74.        // odd∞leny znaΦkami & a individußlnφ nßzvy a hodnoty jsou vzßjemn∞ odd∞leny
  75.        // dvojteΦkami. K separaci pou₧φvßme metodu split.
  76.        var a = cookieval.split('&');           // rozd∞lenφ na pole pßru nßzev/hodnota
  77.        for(var i=0; i < a.length; i++)         // rozd∞lenφ ka₧dΘho pßru na pole
  78.                  a[i] = a [i].split(':'); 
  79.  
  80.        // Nynφ jsme separovali hodnotu cookie, nastavili vÜechny nßzvy a hodnoty
  81.        // stavov²ch prom∞nn²ch v tomto objektu cookie. VÜimn∞te si, ₧e jsme provedli 
  82.        // unescape() hodnoty vlastnosti, proto₧e jsme volali ecsape() kdy₧ jsme ji uklßdali.,
  83.        for(var i = 0; i < a.length; i++) {
  84.                  this[a[i][0]] = unescape(a[i][1]);
  85.        }
  86.        // Jsme hotovi, tak₧e vrßtφme ·sp∞Ün² k≤d.
  87.        return true;
  88. }
  89. // Tato funkce je metoda remove() objektu cookie.
  90. function _cookie_remove()
  91. {
  92.        var cookie;
  93.        cookie = this.$name + '=';
  94.        if (this.$path) cookie += '; path=' + this.$path;
  95.        if (this.$domain) cookie += '; domain=' + this.$domain;
  96.        cookie += '; expires=Fri, 02-Jan-1970 00:00:00 GMT';
  97.        this.$document.cookie = cookie;
  98. }
  99. // Vytvo°φ formßlnφ objekt cookie, abychom mohli pou₧φt prototypov² objekt k zaΦlen∞nφ 
  100. // v²Üe uveden²ch funkcφ do metod.
  101. new cookie();
  102. cookie.prototype.store = _cookie_store;
  103. cookie.prototype.load = _cookie_load;
  104. cookie.prototype.remove = _cookie_remove;
  105. //=========================================================================================
  106. // V²Üe uveden² k≤d je definicφ t°φdy cookie.
  107.