home *** CD-ROM | disk | FTP | other *** search
/ com!online 2002 May / comcd0502.iso / homepage / special / javascript / 10_01 / jscript / meldungsanzeige / funktionen.js next >
Encoding:
JavaScript  |  2000-02-28  |  5.2 KB  |  311 lines

  1. // Funktionen fuer die Meldungsanzeige
  2. // ===================================
  3.  
  4. // Autor: Dietmar Rabich
  5. // http://www.rabich.de
  6.  
  7. // 28.2.2000
  8.  
  9. // --- Hilfswerte ---
  10.  
  11. var    wochentage    =
  12. [
  13.     "Sonntag",
  14.     "Montag",
  15.     "Dienstag",
  16.     "Mittwoch",
  17.     "Donnerstag",
  18.     "Freitag",
  19.     "Sonnabend"
  20. ]
  21.  
  22. var    monate    =
  23. [
  24.     "Januar",
  25.     "Februar",
  26.     "März",
  27.     "April",
  28.     "Mai",
  29.     "Juni",
  30.     "Juli",
  31.     "August",
  32.     "September",
  33.     "Oktober",
  34.     "November",
  35.     "Dezember"
  36. ]
  37.  
  38. var    anfang    = "<%"
  39. var    ende    = "%>"
  40.  
  41. var    standard_meldung    = "Derzeit liegen keine Informationen vor."
  42.  
  43. var    cnt
  44.  
  45. // --- Interne Funktionen ---
  46.  
  47. // Formate
  48. function datum_format_kurz(d)
  49. {
  50.     return String(d.getDate()) + "." +
  51.             String(d.getMonth() + 1) + "." +
  52.             String(d.getFullYear ? d.getFullYear() : d.getYear())
  53. }
  54.  
  55. function datum_format_lang(d)
  56. {
  57.     return wochentage[d.getDay()] + ", " +
  58.             String(d.getDate()) + ". " +
  59.             monate[d.getMonth()] + " " +
  60.             String(d.getFullYear ? d.getFullYear() : d.getYear())
  61. }
  62.  
  63. function datum_format_mit_zeit(d)
  64. {
  65.     return d.toString()
  66. }
  67.  
  68. function zwei_ziffern(x)
  69. {
  70.     if(x < 10)
  71.         return "0" + String(x)
  72.     return String(x)
  73. }
  74.  
  75. function datum_format_zeit(d)
  76. {
  77.     return String(d.getHours()) + ":" +
  78.             zwei_ziffern(d.getMinutes()) + ":" +
  79.             zwei_ziffern(d.getSeconds())
  80. }
  81.  
  82. // Konfigurationsparameter
  83. function datum_und_zeit()
  84. {
  85.     var    heute    = new Date()
  86.     return datum_format_mit_zeit(heute)
  87. }
  88.  
  89. function datum_lang()
  90. {
  91.     var    heute    = new Date()
  92.     return datum_format_lang(heute)
  93. }
  94.  
  95. function datum()
  96. {
  97.     var    heute    = new Date()
  98.     return datum_format_kurz(heute)
  99. }
  100.  
  101. function zeit()
  102. {
  103.     var    heute    = new Date()
  104.     return datum_format_zeit(heute)
  105. }
  106.  
  107. function nummer()
  108. {
  109.     return String(cnt)
  110. }
  111.  
  112. // --- Liste der Werte und Systemwerte sowie die Ersetzungen ---
  113. // typ=0 Wert aus Meldungen, typ=1 Systemwert (Funktion), typ=2 Datum
  114.  
  115. var    liste    =
  116. [
  117.     {
  118.         variable:"titel",
  119.         feld:"Titel",
  120.         typ:0,
  121.         subtyp:0
  122.     },
  123.     {
  124.         variable:"text",
  125.         feld:"Text",
  126.         typ:0,
  127.         subtyp:0
  128.     },
  129.     {
  130.         variable:"autor",
  131.         feld:"Autor",
  132.         typ:0,
  133.         subtyp:0
  134.     },
  135.     {
  136.         variable:"datum",
  137.         feld:"Meldungsdatum",
  138.         typ:2,
  139.         subtyp:0
  140.     },
  141.     {
  142.         variable:"datum",
  143.         feld:"MeldungsdatumLang",
  144.         typ:2,
  145.         subtyp:1
  146.     },
  147.     {
  148.         variable:"datum",
  149.         feld:"MeldungsdatumUndZeit",
  150.         typ:2,
  151.         subtyp:2
  152.     },
  153.     {
  154.         variable:"datum",
  155.         feld:"Meldungszeit",
  156.         typ:2,
  157.         subtyp:3
  158.     },
  159.     {
  160.         variable:datum_und_zeit,
  161.         feld:"DatumUndZeit",
  162.         typ:1,
  163.         subtyp:0
  164.     },
  165.     {
  166.         variable:datum,
  167.         feld:"Datum",
  168.         typ:1,
  169.         subtyp:0
  170.     },
  171.     {
  172.         variable:datum_lang,
  173.         feld:"DatumLang",
  174.         typ:1,
  175.         subtyp:0
  176.     },
  177.     {
  178.         variable:zeit,
  179.         feld:"Zeit",
  180.         typ:1,
  181.         subtyp:0
  182.     },
  183.     {
  184.         variable:nummer,
  185.         feld:"Nummer",
  186.         typ:1,
  187.         subtyp:0
  188.     }
  189. ]
  190.  
  191. // --- Hauptfunktionen ---
  192.  
  193. // Wert zum Feld ermitteln
  194. function wert(nr, p)
  195. {
  196.     var    i
  197.     for(i = 0; i < liste.length; i++)
  198.     {
  199.         if(liste[i].feld == p)
  200.             switch(liste[i].typ)
  201.             {
  202.                 // Funktion
  203.                 case 1:
  204.                     return liste[i].variable()
  205.  
  206.                 // Datum
  207.                 case 2:
  208.                     var    temp    = new Date(meldungen[nr][liste[i].variable])
  209.                     switch(liste[i].subtyp)
  210.                     {
  211.                         case 0:
  212.                             return isNaN(temp) ?
  213.                                 datum() :
  214.                                 datum_format_kurz(temp)
  215.  
  216.                         case 1:
  217.                             return isNaN(temp) ?
  218.                                 datum_lang() :
  219.                                 datum_format_lang(temp)
  220.  
  221.                         case 2:
  222.                             return isNaN(temp) ?
  223.                                 datum_und_zeit() :
  224.                                 datum_format_mit_zeit(temp)
  225.  
  226.                         case 3:
  227.                             return isNaN(temp) ?
  228.                                 zeit() :
  229.                                 datum_format_zeit(temp)
  230.  
  231.                         default:
  232.                             break
  233.                     }
  234.                     break
  235.  
  236.                 // Normalwert
  237.                 default:
  238.                     return meldungen[nr][liste[i].variable]
  239.             }
  240.     }
  241.     return "Unbekannter Wert!!!"
  242. }
  243.  
  244. // Platzhalter durch Werte ersetzen
  245. function ersetze(mldg_nr)
  246. {
  247.     var    s    = vorlagen[meldungen[mldg_nr].vorlage]
  248.     
  249.     ++cnt
  250.  
  251.     var    pos            = s.indexOf(anfang)
  252.     var    platzhalter    = ""
  253.     var    s_anfang    = ""
  254.     var    s_ende        = ""
  255.     var    temp        = 0
  256.  
  257.     while(pos != -1)
  258.     {
  259.         s_anfang    = s.substring(0, pos)
  260.         platzhalter    = s.substring(pos)
  261.         pos2        = platzhalter.indexOf(ende)
  262.         s_ende        = platzhalter.substring(pos2 + ende.length)
  263.         platzhalter    = platzhalter.substring(anfang.length, pos2)
  264.         s            = s_anfang + wert(mldg_nr, platzhalter)
  265.         temp        = s.length
  266.         s            += s_ende
  267.         pos            = s.indexOf(anfang, temp)
  268.     }
  269.  
  270.     return s
  271. }
  272.  
  273. // Test, ob die Meldung angezeigt werden soll
  274. function anzuzeigen(nr)
  275. {
  276.     var    heute    = new Date()
  277.     var    von        = ((meldungen[nr].von == "") || (meldungen[nr].von == null)) ? null : new Date(meldungen[nr].von)
  278.     var    bis        = ((meldungen[nr].bis == "") || (meldungen[nr].bis == null)) ? null : new Date(meldungen[nr].bis)
  279.  
  280.     if(!von && !bis)
  281.         return true
  282.     if(!von)
  283.         return (heute.getTime() <= bis.getTime())
  284.     if(!bis)
  285.         return (von.getTime() <= heute.getTime())
  286.  
  287.     return ((von.getTime() <= heute.getTime()) && (heute.getTime() <= bis.getTime()))
  288. }
  289.  
  290. // Anzeige aller Meldungen
  291. function anzeige()
  292. {
  293.     var    i
  294.     var    anzeige_erfolgt    = false
  295.     cnt    = 0
  296.  
  297.     document.open("text/html")
  298.  
  299.     for(i = 0; i < meldungen.length; i++)
  300.         if(anzuzeigen(i))
  301.         {
  302.             document.writeln(ersetze(i))
  303.             anzeige_erfolgt    = true
  304.         }
  305.  
  306.     if(!anzeige_erfolgt)
  307.         document.writeln(standard_meldung)
  308.  
  309.     document.close()
  310. }
  311.