Subversion Repositories LCARS

Rev

Rev 29 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 29 Rev 32
1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
2
  "http://www.w3.org/TR/html4/strict.dtd">
2
  "http://www.w3.org/TR/html4/strict.dtd">
3
<html lang="de">
3
<html lang="de">
4
  <head>
4
  <head>
5
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6
    <title>Seri-o-meter</title>
6
    <title>Seri-o-meter</title>
-
 
7
    <?php
-
 
8
//       require_once 'css/lessphp/lessc.inc.php';
-
 
9
//       lessc::ccompile('style.less', 'style-less.css');
-
 
10
       // require_once 'css/least/LEAST.php';
-
 
11
       // de\pointedears\css\least\LEAST::compile('style.least', 'style-least.css');
-
 
12
    ?>
7
    <link rel="stylesheet" href="style.css" type="text/css">
13
    <link rel="stylesheet" href="style.css" type="text/css">
8
    <script type="text/javascript">
14
    <script type="text/javascript">
9
    /*
15
    /*
10
      function setStyle(obj, style)
16
      function setStyle(obj, style)
11
      {
17
      {
12
        var styleProperties = Object.getOwnPropertyNames(style);
18
        var styleProperties = Object.getOwnPropertyNames(style);
13
        for (var i = styleProperties.length; i--;)
19
        for (var i = styleProperties.length; i--;)
14
        {
20
        {
15
          var prop = styleProperties[i];
21
          var prop = styleProperties[i];
16
          obj.style[prop] = style[prop];
22
          obj.style[prop] = style[prop];
17
        }
23
        }
18
      }
24
      }
19
    
25
    
20
      function editor()
26
      function editor()
21
      {
27
      {
22
        var div = document.createElement("div");
28
        var div = document.createElement("div");
23
        setStyle(div, {
29
        setStyle(div, {
24
          position: "fixed",
30
          position: "fixed",
25
          right: "0",
31
          right: "0",
26
          top: "0",
32
          top: "0",
27
          width: "200px",
33
          width: "200px",
28
          bottom: "0",
34
          bottom: "0",
29
          backgroundColor: "#ccc"
35
          backgroundColor: "#ccc"
30
        });
36
        });
31
        document.body.appendChild(div);
37
        document.body.appendChild(div);
32
38
33
        function findRules(selectorText)
39
        function findRules(selectorText)
34
        {
40
        {
35
          var slice = Array.prototype.slice;
41
          var slice = Array.prototype.slice;
36
          function toArray(obj)
42
          function toArray(obj)
37
          {
43
          {
38
            return slice.call(obj);
44
            return slice.call(obj);
39
          }
45
          }
40
46
41
          var rx = new RegExp("(^|\\s)" + selectorText.replace(/[^$.(){}\[\]]/, "\\$&") + "\\s*$");
47
          var rx = new RegExp("(^|\\s)" + selectorText.replace(/[^$.(){}\[\]]/, "\\$&") + "\\s*$");
42
          var hits = toArray(document.styleSheets).map(function (styleSheet) {
48
          var hits = toArray(document.styleSheets).map(function (styleSheet) {
43
            return toArray(styleSheet.cssRules || styleSheet.rules).filter(function (rule) {
49
            return toArray(styleSheet.cssRules || styleSheet.rules).filter(function (rule) {
44
              return rx.test(rule.selectorText);
50
              return rx.test(rule.selectorText);
45
            });
51
            });
46
          }).filter(function (hit) {
52
          }).filter(function (hit) {
47
            return hit.length > 0;
53
            return hit.length > 0;
48
          });
54
          });
49
55
50
          return Array.prototype.concat.apply([], hits);
56
          return Array.prototype.concat.apply([], hits);
51
        }
57
        }
52
58
53
        var afterRule = findRules(".heroes .o::after");
59
        var afterRule = findRules(".heroes .o::after");
54
        var rxBgImage = new RegExp(
60
        var rxBgImage = new RegExp(
55
          "{RADIALGRADIENT}\\(\\s*({POSITION}\\s*,\\s*)?({SHAPE}\\s*,\\s*)?{COLORSTOP}(\\s*,\\s*{COLORSTOP})+\\s*\\)"
61
          "{RADIALGRADIENT}\\(\\s*({POSITION}\\s*,\\s*)?({SHAPE}\\s*,\\s*)?{COLORSTOP}(\\s*,\\s*{COLORSTOP})+\\s*\\)"
56
          .replace(/\{RADIALGRADIENT\}/g, "(-(webkit|moz|o|ms)-)?radial-gradient")
62
          .replace(/\{RADIALGRADIENT\}/g, "(-(webkit|moz|o|ms)-)?radial-gradient")
57
          .replace(/\{POSITION\}/g, "{LENGTH}(\\s+{LENGTH})?")
63
          .replace(/\{POSITION\}/g, "{LENGTH}(\\s+{LENGTH})?")
58
          .replace(/\{SHAPE\}/g, "\\s*((circle|ellipse)(\\s+({EDGE}))?|{LENGTH}(\\s+{LENGTH}))")
64
          .replace(/\{SHAPE\}/g, "\\s*((circle|ellipse)(\\s+({EDGE}))?|{LENGTH}(\\s+{LENGTH}))")
59
          .replace(/\{EDGE\}/g, "cover|closest-corner|closest-side|farthest-corner|farthest-side")
65
          .replace(/\{EDGE\}/g, "cover|closest-corner|closest-side|farthest-corner|farthest-side")
60
          .replace(/\{COLORSTOP\}/g, "{COLOR}(\\s*{PERCENTAGE})?")
66
          .replace(/\{COLORSTOP\}/g, "{COLOR}(\\s*{PERCENTAGE})?")
61
          .replace(/\{LENGTH\}/g, "{NUMBER}{UNIT}")
67
          .replace(/\{LENGTH\}/g, "{NUMBER}{UNIT}")
62
          .replace(/\{COLOR\}/g, "({COLORNAME}|{RGB}|{RGBA})")
68
          .replace(/\{COLOR\}/g, "({COLORNAME}|{RGB}|{RGBA})")
63
          .replace(/\{RGB\}/g, "rgb\\s*\\(\\s*{COLORCOMP}(\\s*,\\s*{COLORCOMP}){2}\\s*\\)")
69
          .replace(/\{RGB\}/g, "rgb\\s*\\(\\s*{COLORCOMP}(\\s*,\\s*{COLORCOMP}){2}\\s*\\)")
64
          .replace(/\{RGBA\}/g, "rgba\\s*\\(\\s*{COLORCOMP}(\\s*,\\s*{COLORCOMP}){2}\\s*,\\s*{PERCENTAGE}\\s*\\)")
70
          .replace(/\{RGBA\}/g, "rgba\\s*\\(\\s*{COLORCOMP}(\\s*,\\s*{COLORCOMP}){2}\\s*,\\s*{PERCENTAGE}\\s*\\)")
65
          .replace(/\{COLORCOMP\}/g, "{NUMBER}%?")
71
          .replace(/\{COLORCOMP\}/g, "{NUMBER}%?")
66
          .replace(/\{COLORNAME\}/g, "black|transparent")
72
          .replace(/\{COLORNAME\}/g, "black|transparent")
67
          .replace(/\{PERCENTAGE\}/g, "{NUMBER}%?")
73
          .replace(/\{PERCENTAGE\}/g, "{NUMBER}%?")
68
          .replace(/\{NUMBER\}/g, "\\d+")
74
          .replace(/\{NUMBER\}/g, "\\d+")
69
          .replace(/\{UNIT\}/g, "(px|%|em|ex|pt)")
75
          .replace(/\{UNIT\}/g, "(px|%|em|ex|pt)")
70
          , "g");
76
          , "g");
71
        console.log(rxBgImage);
77
        console.log(rxBgImage);
72
        var value = afterRule[0].style.getPropertyValue("background-image");
78
        var value = afterRule[0].style.getPropertyValue("background-image");
73
        console.log(value);
79
        console.log(value);
74
        var backgroundImages = value.match(rxBgImage);
80
        var backgroundImages = value.match(rxBgImage);
75
        console.log(backgroundImages);
81
        console.log(backgroundImages);
76
      }
82
      }
77
      */
83
      */
78
      function net()
84
      function net()
79
      {
85
      {
80
        var map = {
86
        var map = {
81
          "gene-roddenberry's-andromeda": "andromeda",
87
          "gene-roddenberry's-andromeda": "andromeda",
82
          "battlestar-galactica-2004":    "battlestar-galactica",
88
          "battlestar-galactica-2004":    "battlestar-galactica",
83
          "battlestar-galactica-2004-de": "battlestar-galactica",
89
          "battlestar-galactica-2004-de": "battlestar-galactica",
84
          "buffy-the-vampire-slayer":     "buffy",
90
          "buffy-the-vampire-slayer":     "buffy",
-
 
91
          "lois-clark-the-new-adventures-of-superman": "lois-clark-the-new-adventures-of-superman-1993",
85
          get: function (key) {
92
          get: function (key) {
86
            return this.hasOwnProperty(key) ? this[key] : key;
93
            return this.hasOwnProperty(key) ? this[key] : key;
87
          }
94
          }
88
        };
95
        };
89
        
96
        
90
        var f = function (e) {
97
        var f = function (e) {
91
          if (e && e.shiftKey && e.ctrlKey)
98
          if (e && e.shiftKey && e.ctrlKey)
92
          {
99
          {
93
            var key = map.get(this.textContent.toLowerCase()
100
            var key = map.get(this.textContent.toLowerCase()
94
              .replace(/[,()–]/g, "").replace(/\s+/g, "-").replace("-de", ""));
101
              .replace(/[&:.,()–]/g, "").replace(/\s+/g, "-").replace("-de", ""));
95
            window.open("http://serienjunkies.org/serie/" + encodeURIComponent(key));
102
            window.open("http://serienjunkies.org/serie/" + encodeURIComponent(key));
96
            e.preventDefault();
103
            e.preventDefault();
97
          }
104
          }
98
        };
105
        };
99
106
100
        try
107
        try
101
        {
108
        {
102
          for (var a = document.links, i = a.length; i--;)
109
          for (var a = document.links, i = a.length; i--;)
103
          {
110
          {
104
            var e = a[i];
111
            var e = a[i];
105
            e.addEventListener("click", f, false);
112
            e.addEventListener("click", f, false);
106
          }
113
          }
107
        }
114
        }
108
        catch (e) {}
115
        catch (e) {}
109
      }
116
      }
110
    </script>
117
    </script>
111
  </head>
118
  </head>
112
119
113
  <body onload="net() // editor()">
120
  <body onload="net() // editor()">
114
    <h1 class="hidden">Seri-o-meter</h1>
121
    <h1 class="hidden">Seri-o-meter</h1>
115
    <?php // var_dump($serien); ?>
122
    <?php // var_dump($serien); ?>
116
    <table>
123
    <table>
117
    <?php
124
    <?php
-
 
125
    if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
-
 
126
    {
-
 
127
      function strftime_portable ($format, $timestamp = null)
-
 
128
      {
-
 
129
        if ($timestamp === null)
-
 
130
        {
-
 
131
          $timestamp = time();
-
 
132
        }
-
 
133
        
-
 
134
        $format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
-
 
135
        return strftime($format, $timestamp);
-
 
136
      }
-
 
137
    }
-
 
138
    else
-
 
139
    {
-
 
140
      function strftime_portable ($format, $timestamp = null)
-
 
141
      {
-
 
142
        if ($timestamp === null)
-
 
143
        {
-
 
144
          $timestamp = time();
-
 
145
        }
-
 
146
        
-
 
147
        return strftime($format, $timestamp);
-
 
148
      }
-
 
149
    }
-
 
150
    
118
    setlocale(LC_ALL, 'de_CH.UTF-8');
151
    setlocale(LC_ALL, 'de_CH.UTF-8');
-
 
152
    
119
    foreach ($serien as $name => &$serie)
153
    foreach ($serien as $name => &$serie)
120
    {
154
    {
121
      ?>
155
      ?>
122
      <tr>
156
      <tr>
123
        <td style="text-align: center"><?php
157
        <td style="text-align: center"><?php
124
          $recommended = ($name === $min_series);
158
          $recommended = ($name === $min_series);
125
          if ($recommended) { ?>→<?php }
159
          if ($recommended) { ?>→<?php }
126
          if (isset($serie['ignore']) && $serie['ignore'])
160
          if (isset($serie['ignore']) && $serie['ignore'])
127
          {
161
          {
128
            ?>→<span style="color: red; font-weight: bold">&#8416;</span><?php
162
            ?>→<span style="color: red; font-weight: bold">&#8416;</span><?php
129
          }
163
          }
130
          ?></td>
164
          ?></td>
131
        <th<?php if ($recommended) { ?> class="recommended"<?php } ?>><?php
165
        <th<?php if ($recommended) { ?> class="recommended"<?php } ?>><?php
132
          $ep_list = isset($serie['episode_list']);
166
          $ep_list = isset($serie['episode_list']);
133
          if ($ep_list)
167
          if ($ep_list)
134
          {
168
          {
135
            ?><a href="<?php
169
            ?><a href="<?php
136
              echo htmlspecialchars($serie['episode_list']);
170
              echo htmlspecialchars($serie['episode_list']);
137
            ?>" title="Episodenliste"><?php
171
            ?>" title="Episodenliste"><?php
138
          }
172
          }
139
          echo $name;
173
          echo $name;
140
          if ($ep_list) { ?></a><?php }
174
          if ($ep_list) { ?></a><?php }
141
          ?><br>
175
          ?><br>
142
          <span style="font-weight: normal"><?php
176
          <span style="font-weight: normal"><?php
143
            if (array_key_exists('channel', $serie)) echo $serie['channel'];
177
            if (array_key_exists('channel', $serie)) echo $serie['channel'];
144
178
145
            if (array_key_exists('showtimes', $serie))
179
            if (array_key_exists('showtimes', $serie))
146
            {
180
            {
147
              echo ', ' . $serie['showtimes'];
181
              echo ', ' . $serie['showtimes'];
148
            }
182
            }
149
            ?></span></th>
183
            ?></span></th>
150
        <td<?php if ($recommended) { ?> class="recommended"<?php } ?>>
184
        <td<?php if ($recommended) { ?> class="recommended"<?php } ?>>
151
          <div>Gesehen: <?php
185
          <div>Gesehen: <?php
152
            echo implode(', ', $serie['coverage']) . ' ('. $serie['count'];
186
            echo implode(', ', $serie['coverage']) . ' ('. $serie['count'];
153
            ?> von <?php $total = $serie['total']; echo $total; ?> Episoden)<?php
187
            ?> von <?php $total = $serie['total']; echo $total; ?> Episoden)<?php
154
              if (isset($serie['last_seen']))
188
              if (isset($serie['last_seen']))
155
              {
189
              {
156
                ?>; zuletzt am <?php
190
                ?>; zuletzt am <?php
157
                echo strftime('%A, %e. %B %Y %H:%M %z', $serie['last_seen']);
191
                echo strftime_portable('%A, %e. %B %Y %H:%M %z', $serie['last_seen']);
158
              }
192
              }
159
            ?></div>
193
            ?></div>
160
          <div class="box">
194
          <div class="box">
161
            <div class="meter"
195
            <div class="meter"
162
                 style="width: <?php
196
                 style="width: <?php
163
                   $percentage = $serie['percentage'];
197
                   $percentage = $serie['percentage'];
164
                   echo $percentage; ?>%"
198
                   echo $percentage; ?>%"
165
                 ></div>
199
                 ></div>
166
            <?php
200
            <?php
167
              if (array_key_exists('seasons', $serie))
201
              if (array_key_exists('seasons', $serie))
168
              {
202
              {
169
                $offset = 0;
203
                $offset = 0;
170
                foreach ($serie['seasons'] as $key => $season)
204
                foreach ($serie['seasons'] as $key => $season)
171
                {
205
                {
172
                  ?>
206
                  ?>
173
                  <div class="season"
207
                  <div class="season"
174
                  <?php
208
                  <?php
175
                      if (!is_numeric($key))
209
                      if (!is_numeric($key))
176
                      {
210
                      {
177
                        ?> title="<?php echo htmlspecialchars($key); ?>"<?php
211
                        ?> title="<?php echo htmlspecialchars($key); ?>"<?php
178
                      }
212
                      }
179
                     ?>
213
                     ?>
180
                       style="<?php
214
                       style="<?php
181
                       					if ($key === 0)
215
                       					if ($key === 0)
182
                       					{
216
                       					{
183
                       						?>border-left: none; <?php
217
                       						?>border-left: none; <?php
184
                                }
218
                                }
185
                              ?>left: <?php echo $offset; ?>%;
219
                              ?>left: <?php echo $offset; ?>%;
186
                              width: <?php echo $season / $total * 100; ?>%"
220
                              width: <?php echo $season / $total * 100; ?>%"
187
                              ><?php
221
                              ><?php
188
                                if (is_numeric($key))
222
                                if (is_numeric($key))
189
                                {
223
                                {
190
                                  echo ($key + 1);
224
                                  echo ($key + 1);
191
                                }
225
                                }
192
                                else
226
                                else
193
                           {
227
                           {
194
                                  echo $key;
228
                                  echo $key;
195
                                }
229
                                }
196
                              ?></div>
230
                              ?></div>
197
                  <?php
231
                  <?php
198
                  $offset += round($season / $total * 100, 1);
232
                  $offset += round($season / $total * 100, 1);
199
                }
233
                }
200
              }
234
              }
201
            
235
            
202
              if (isset($serie['episodes']))
236
              if (isset($serie['episodes']))
203
              {
237
              {
204
                $prevNumber = null;
238
                $prevNumber = null;
205
              	foreach ($serie['episodes'] as $episode => $description)
239
              	foreach ($serie['episodes'] as $episode => $description)
206
              	{
240
              	{
207
              	  $episode_str = $episode;
241
              	  $episode_str = $episode;
208
              	  if (isset($serie['season_ranges']) && is_array($serie['season_ranges']))
242
              	  if (isset($serie['season_ranges']) && is_array($serie['season_ranges']))
209
              	  {
243
              	  {
210
              	    foreach ($serie['season_ranges'] as $season_key => $season_range)
244
              	    foreach ($serie['season_ranges'] as $season_key => $season_range)
211
              	    {
245
              	    {
212
              	      if ($episode >= $season_range[0] && $episode <= $season_range[1])
246
              	      if ($episode >= $season_range[0] && $episode <= $season_range[1])
213
              	      {
247
              	      {
214
              	        $episode_str = sprintf("%u (%ux%02u)", $episode, $season_key, $episode - $season_range[0] + 1);
248
              	        $episode_str = sprintf("%u (%ux%02u)", $episode, $season_key, $episode - $season_range[0] + 1);
215
              	      }
249
              	      }
216
              	    }
250
              	    }
217
              	  }
251
              	  }
218
                  ?>
252
                  ?>
219
                  <div class="coverage"
253
                  <div class="coverage"
220
                       style="<?php
254
                       style="<?php
221
                                if (is_null($prevNumber) || $prevNumber !== $episode - 1)
255
                                if (is_null($prevNumber) || $prevNumber !== $episode - 1)
222
                                {
256
                                {
223
                                  ?>border-left: 1px solid rgba(0, 218, 0, 0.5); <?php
257
                                  ?>border-left: 1px solid rgba(0, 218, 0, 0.5); <?php
224
            	                  }
258
            	                  }
225
          	                  ?>
259
          	                  ?>
226
                              border-right: 1px solid rgba(0, 218, 0, 0.5);
260
                              border-right: 1px solid rgba(0, 218, 0, 0.5);
227
                              background-color: transparent;
261
                              background-color: transparent;
228
                              left: <?php echo ($episode - 1) / $total * 100; ?>%;
262
                              left: <?php echo ($episode - 1) / $total * 100; ?>%;
229
                              width: <?php echo 1 / $total * 100; ?>%"
263
                              width: <?php echo 1 / $total * 100; ?>%"
230
                       title="<?php
264
                       title="<?php
231
                           echo "{$episode_str}: " . htmlspecialchars($description);
265
                           echo "{$episode_str}: " . htmlspecialchars($description);
232
                           ?>"></div><?php
266
                           ?>"></div><?php
233
                  $prevNumber = $episode;
267
                  $prevNumber = $episode;
234
              	}
268
              	}
235
              }
269
              }
236
              
270
              
237
              if (isset($serie['seen']))
271
              if (isset($serie['seen']))
238
              {
272
              {
239
                foreach ($serie['seen'] as $range)
273
                foreach ($serie['seen'] as $range)
240
                {
274
                {
241
                  if (!is_array($range))
275
                  if (!is_array($range))
242
                  {
276
                  {
243
                    $range = array($range, $range);
277
                    $range = array($range, $range);
244
                  }
278
                  }
245
  /*
279
  /*
246
                  for ($i = $episode[0]; $i < $episode[1]; ++$i)
280
                  for ($i = $episode[0]; $i < $episode[1]; ++$i)
247
                    {
281
                    {
248
                    ?>
282
                    ?>
249
                    <div class="coverage"
283
                    <div class="coverage"
250
                         style="left: <?php echo ($episode[0] - 1) / $total * 100; ?>%;
284
                         style="left: <?php echo ($episode[0] - 1) / $total * 100; ?>%;
251
                                width: <?php echo ($episode[1] - $episode[0] + 1) / $total * 100; ?>%"
285
                                width: <?php echo ($episode[1] - $episode[0] + 1) / $total * 100; ?>%"
252
                         ></div>
286
                         ></div>
253
                    <?php
287
                    <?php
254
                    }
288
                    }
255
                  }
289
                  }
256
                  else
290
                  else
257
  */
291
  */
258
                
292
                
259
                  for ($episode = $range[0]; $episode <= $range[1]; ++$episode)
293
                  for ($episode = $range[0]; $episode <= $range[1]; ++$episode)
260
                  {
294
                  {
261
                    $episode_str = $episode;
295
                    $episode_str = $episode;
262
                    if (isset($serie['season_ranges']) && is_array($serie['season_ranges']))
296
                    if (isset($serie['season_ranges']) && is_array($serie['season_ranges']))
263
                	  {
297
                	  {
264
                	    foreach ($serie['season_ranges'] as $season_key => $season_range)
298
                	    foreach ($serie['season_ranges'] as $season_key => $season_range)
265
                	    {
299
                	    {
266
                	      if ($episode >= $season_range[0] && $episode <= $season_range[1])
300
                	      if ($episode >= $season_range[0] && $episode <= $season_range[1])
267
                	      {
301
                	      {
268
                	        $episode_str = sprintf("%u (%ux%02u)", $episode, $season_key, $episode - $season_range[0] + 1);
302
                	        $episode_str = sprintf("%u (%ux%02u)", $episode, $season_key, $episode - $season_range[0] + 1);
269
                	      }
303
                	      }
270
                	    }
304
                	    }
271
                	  }
305
                	  }
272
                    ?>
306
                    ?>
273
                    <div class="coverage"
307
                    <div class="coverage"
274
                         style="left: <?php echo ($episode - 1) / $total * 100; ?>%;
308
                         style="left: <?php echo ($episode - 1) / $total * 100; ?>%;
275
                                width: <?php echo 1 / $total * 100; ?>%"
309
                                width: <?php echo 1 / $total * 100; ?>%"
276
                         <?php
310
                         <?php
277
                           if (isset($serie['episodes']) && array_key_exists($episode, $serie['episodes']))
311
                           if (isset($serie['episodes']) && array_key_exists($episode, $serie['episodes']))
278
                           {
312
                           {
279
                         ?>title="<?php
313
                         ?>title="<?php
280
                             echo "{$episode_str}: " . htmlspecialchars($serie['episodes'][$episode]);
314
                             echo "{$episode_str}: " . htmlspecialchars($serie['episodes'][$episode]);
281
                             ?>"<?php
315
                             ?>"<?php
282
                           }
316
                           }
283
                         ?>></div>
317
                         ?>></div>
284
                    <?php
318
                    <?php
285
                	}
319
                	}
286
                }
320
                }
287
              }
321
              }
288
            ?>
322
            ?>
289
            <span class="percentage"><?php echo round($percentage, 1); ?>%</span>
323
            <span class="percentage"><?php echo round($percentage, 1); ?>%</span>
290
          </div>
324
          </div>
291
        </td>
325
        </td>
292
      </tr>
326
      </tr>
293
      <?php
327
      <?php
294
    }
328
    }
295
    ?>
329
    ?>
296
    </table>
330
    </table>
297
  </body>
331
  </body>
298
</html>
332
</html>