PageRenderTime 53ms CodeModel.GetById 14ms app.highlight 25ms RepoModel.GetById 1ms app.codeStats 1ms

/trunk/jsdoc-toolkit/templates/jsdoc/class.tmpl

http://jsdoc-toolkit.googlecode.com/
Go Template | 649 lines | 603 code | 46 blank | 0 comment | 0 complexity | 747387d2ee192b58d6c22a0a39381aa9 MD5 | raw file
  1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4	<head>
  5		<meta http-equiv="content-type" content="text/html; charset={+IO.encoding+}" />
  6		<meta name="generator" content="JsDoc Toolkit" />
  7		{! Link.base = "../"; /* all generated links will be relative to this */ !}
  8		<title>JsDoc Reference - {+data.alias+}</title>
  9
 10		<style type="text/css">
 11			{+include("static/default.css")+}
 12		</style>
 13	</head>
 14
 15	<body>
 16<!-- ============================== header ================================= -->	
 17		<!-- begin static/header.html -->
 18		{+include("static/header.html")+}
 19		<!-- end static/header.html -->
 20
 21<!-- ============================== classes index ============================ -->
 22		<div id="index">
 23			<!-- begin publish.classesIndex -->
 24			{+publish.classesIndex+}
 25			<!-- end publish.classesIndex -->
 26		</div>
 27		
 28		<div id="content">
 29<!-- ============================== class title ============================ -->
 30			<h1 class="classTitle">
 31				{!
 32					var classType = "";
 33					
 34					if (data.isBuiltin()) {
 35						classType += "Built-In ";
 36					}
 37					
 38					if (data.isNamespace) {
 39						if (data.is('FUNCTION')) {
 40							classType += "Function ";
 41						}
 42						classType += "Namespace ";
 43					}
 44					else {
 45						classType += "Class ";
 46					}
 47				!}
 48				{+classType+}{+data.alias+}
 49			</h1>
 50
 51<!-- ============================== class summary ========================== -->			
 52			<p class="description">
 53				<if test="data.version"><br />Version
 54					{+ data.version +}.<br />
 55				</if>
 56				<if test="data.augments.length"><br />Extends
 57					{+
 58						data.augments
 59						.sort()
 60						.map(
 61							function($) { return new Link().toSymbol($); }
 62						)
 63						.join(", ")
 64					+}.<br />
 65				</if>
 66			
 67				{+resolveLinks(data.classDesc)+}
 68				
 69				<if test="!data.isBuiltin()">{# isn't defined in any file #}
 70					<br /><i>Defined in: </i> {+new Link().toSrc(data.srcFile)+}.
 71				</if>
 72			</p>
 73
 74<!-- ============================== constructor summary ==================== -->			
 75			<if test="!data.isBuiltin() && (data.isNamespace || data.is('CONSTRUCTOR'))">
 76			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class {+data.alias+}.">
 77				<caption>{+classType+}Summary</caption>
 78				<thead>
 79					<tr>
 80						<th scope="col">Constructor Attributes</th>
 81						<th scope="col">Constructor Name and Description</th>
 82					</tr>
 83				</thead>
 84				<tbody>
 85					<tr>
 86						<td class="attributes">{!
 87							if (data.isPrivate) output += "&lt;private&gt; ";
 88							if (data.isInner) output += "&lt;inner&gt; ";
 89						!}&nbsp;</td>
 90						<td class="nameDescription" {!if (data.comment.getTag("hilited").length){output += 'style="color: red"'}!}>
 91							<div class="fixedFont">
 92								<b>{+ new Link().toSymbol(data.alias).inner('constructor')+}</b><if test="classType != 'Namespace '">{+ makeSignature(data.params) +}</if>
 93							</div>
 94							<div class="description">{+resolveLinks(summarize(data.desc))+}</div>
 95						</td>
 96					</tr>
 97				</tbody>
 98			</table>
 99			</if>
100
101<!-- ============================== properties summary ===================== -->
102			<if test="data.properties.length">
103				{! var ownProperties = data.properties.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !}
104				<if test="ownProperties.length">
105				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class {+data.alias+}.">
106					<caption>Field Summary</caption>
107					<thead>
108						<tr>
109							<th scope="col">Field Attributes</th>
110							<th scope="col">Field Name and Description</th>
111						</tr>
112					</thead>
113					<tbody>
114					<for each="member" in="ownProperties">
115						<tr>
116							<td class="attributes">{!
117								if (member.isPrivate) output += "&lt;private&gt; ";
118								if (member.isInner) output += "&lt;inner&gt; ";
119								if (member.isStatic) output += "&lt;static&gt; ";
120								if (member.isConstant) output += "&lt;constant&gt; ";
121							!}&nbsp;</td>
122							<td class="nameDescription">
123								<div class="fixedFont">
124								<if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name)+}</b>
125								</div>
126								<div class="description">{+resolveLinks(summarize(member.desc))+}</div>
127							</td>
128						</tr>
129					</for>
130					</tbody>
131				</table>
132				</if>
133				
134				<if test="data.inheritsFrom.length">
135				<dl class="inheritsList">
136				{!
137					var borrowedMembers = data.properties.filter(function($) {return $.memberOf != data.alias});
138					
139					var contributers = [];
140					borrowedMembers.map(function($) {if (contributers.indexOf($.memberOf) < 0) contributers.push($.memberOf)});
141					for (var i = 0, l = contributers.length; i < l; i++) {
142						output +=
143							"<dt>Fields borrowed from class "+new Link().toSymbol(contributers[i])+": </dt>"
144							+
145							"<dd>" +
146							borrowedMembers
147							.filter(
148								function($) { return $.memberOf == contributers[i] }
149							)
150							.sort(makeSortby("name"))
151							.map(
152								function($) { return new Link().toSymbol($.alias).withText($.name) }
153							)
154							.join(", ")
155							+
156							"</dd>";
157					}
158				!}
159				</dl>
160				</if>
161			</if>
162
163<!-- ============================== methods summary ======================== -->
164			<if test="data.methods.length">
165				{! var ownMethods = data.methods.filter(function($){return $.memberOf == data.alias  && !$.isNamespace}).sort(makeSortby("name")); !}
166				<if test="ownMethods.length">
167				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class {+data.alias+}.">
168					<caption>Method Summary</caption>
169					<thead>
170						<tr>
171							<th scope="col">Method Attributes</th>
172							<th scope="col">Method Name and Description</th>
173						</tr>
174					</thead>
175					<tbody>
176					<for each="member" in="ownMethods">
177						<tr>
178							<td class="attributes">{!
179								if (member.isPrivate) output += "&lt;private&gt; ";
180								if (member.isInner) output += "&lt;inner&gt; ";
181								if (member.isStatic) output += "&lt;static&gt; ";
182							!}&nbsp;</td>
183							<td class="nameDescription">
184								<div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name.replace(/\^\d+$/, ''))+}</b>{+makeSignature(member.params)+}
185								</div>
186								<div class="description">{+resolveLinks(summarize(member.desc))+}</div>
187							</td>
188						</tr>
189					</for>
190					</tbody>
191				</table>
192				</if>
193				
194				<if test="data.inheritsFrom.length">
195				<dl class="inheritsList">
196				{!
197					var borrowedMembers = data.methods.filter(function($) {return $.memberOf != data.alias});
198					var contributers = [];
199					borrowedMembers.map(function($) {if (contributers.indexOf($.memberOf) < 0) contributers.push($.memberOf)});
200					for (var i = 0, l = contributers.length; i < l; i++) {
201						output +=
202							"<dt>Methods borrowed from class "+new Link().toSymbol(contributers[i])+": </dt>"
203							+
204							"<dd>" +
205							borrowedMembers
206							.filter(
207								function($) { return $.memberOf == contributers[i] }
208							)
209							.sort(makeSortby("name"))
210							.map(
211								function($) { return new Link().toSymbol($.alias).withText($.name) }
212							)
213							.join(", ")
214							+
215							"</dd>";
216					}
217				
218				!}
219				</dl>
220				</if>
221			</if>
222<!-- ============================== events summary ======================== -->
223			<if test="data.events.length">
224				{! var ownEvents = data.events.filter(function($){return $.memberOf == data.alias  && !$.isNamespace}).sort(makeSortby("name")); !}
225				<if test="ownEvents.length">
226				<table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class {+data.alias+}.">
227					<caption>Event Summary</caption>
228					<thead>
229						<tr>
230							<th scope="col">Event Attributes</th>
231							<th scope="col">Event Name and Description</th>
232						</tr>
233					</thead>
234					<tbody>
235					<for each="member" in="ownEvents">
236						<tr>
237							<td class="attributes">{!
238								if (member.isPrivate) output += "&lt;private&gt; ";
239								if (member.isInner) output += "&lt;inner&gt; ";
240								if (member.isStatic) output += "&lt;static&gt; ";
241							!}&nbsp;</td>
242							<td class="nameDescription">
243								<div class="fixedFont"><if test="member.isStatic && member.memberOf != '_global_'">{+member.memberOf+}.</if><b>{+new Link().toSymbol(member.alias).withText(member.name)+}</b>{+makeSignature(member.params)+}
244								</div>
245								<div class="description">{+resolveLinks(summarize(member.desc))+}</div>
246							</td>
247						</tr>
248					</for>
249					</tbody>
250				</table>
251				</if>
252				
253				<if test="data.inheritsFrom.length">
254				<dl class="inheritsList">
255				{!
256					var borrowedMembers = data.events.filter(function($) {return $.memberOf != data.alias});
257					var contributers = [];
258					borrowedMembers.map(function($) {if (contributers.indexOf($.memberOf) < 0) contributers.push($.memberOf)});
259					for (var i = 0, l = contributers.length; i < l; i++) {
260						output +=
261							"<dt>Events borrowed from class "+new Link().toSymbol(contributers[i])+": </dt>"
262							+
263							"<dd>" +
264							borrowedMembers
265							.filter(
266								function($) { return $.memberOf == contributers[i] }
267							)
268							.sort(makeSortby("name"))
269							.map(
270								function($) { return new Link().toSymbol($.alias).withText($.name) }
271							)
272							.join(", ")
273							+
274							"</dd>";
275					}
276				
277				!}
278				</dl>
279				</if>
280			</if>
281
282<!-- ============================== constructor details ==================== -->		
283			<if test="!data.isBuiltin() && (data.isNamespace || data.is('CONSTRUCTOR'))">
284			<div class="details"><a name="constructor"> </a>
285				<div class="sectionTitle">
286					{+classType+}Detail
287				</div>
288				
289				<div class="fixedFont">{!
290					if (data.isPrivate) output += "&lt;private&gt; ";
291					if (data.isInner) output += "&lt;inner&gt; ";
292				!}
293						<b>{+ data.alias +}</b><if test="classType != 'Namespace '">{+ makeSignature(data.params) +}</if>
294				</div>
295				
296				<div class="description">
297					{+resolveLinks(data.desc)+}
298					<if test="data.author"><br /><i>Author: </i>{+data.author+}.</if>
299				</div>
300				
301				<if test="data.example.length">
302				<for each="example" in="data.example">
303				<pre class="code">{+example+}</pre>
304				</for>
305				</if>
306				
307				
308					<if test="data.params.length">
309						<dl class="detailList">
310						<dt class="heading">Parameters:</dt>
311						<for each="item" in="data.params">
312							<dt>
313								{+((item.type)?""+("<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type)+"}</span> ")) : "")+} <b>{+item.name+}</b>
314								<if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
315							</dt>
316								<dd>{+resolveLinks(item.desc)+}</dd>
317						</for>
318						</dl>
319					</if>
320					<if test="data.deprecated">
321						<dl class="detailList">
322						<dt class="heading">Deprecated:</dt>
323						<dt>
324							{+resolveLinks(data.deprecated)+}
325						</dt>
326						</dl>
327					</if>
328					<if test="data.since">
329						<dl class="detailList">
330						<dt class="heading">Since:</dt>
331							<dd>{+ data.since +}</dd>
332						</dl>
333					</if>
334					<if test="data.exceptions.length">
335						<dl class="detailList">
336						<dt class="heading">Throws:</dt>
337						<for each="item" in="data.exceptions">
338							<dt>
339								{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
340							</dt>
341								<dd>{+resolveLinks(item.desc)+}</dd>
342						</for>
343						</dl>
344					</if>
345					<if test="data.returns.length">
346						<dl class="detailList">
347						<dt class="heading">Returns:</dt>
348						<for each="item" in="data.returns">
349								<dd>{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
350						</for>
351						</dl>
352					</if>
353					<if test="data.requires.length">
354						<dl class="detailList">
355						<dt class="heading">Requires:</dt>
356						<for each="item" in="data.requires">
357							<dd>{+ new Link().toSymbol(item) +}</dd>
358						</for>
359						</dl>
360					</if>
361					<if test="data.see.length">
362						<dl class="detailList">
363						<dt class="heading">See:</dt>
364						<for each="item" in="data.see">
365							<dd>{+ new Link().toSymbol(item) +}</dd>
366						</for>
367						</dl>
368					</if>
369
370			</div>
371			</if>
372
373<!-- ============================== field details ========================== -->		
374			<if test="defined(ownProperties) && ownProperties.length">
375				<div class="sectionTitle">
376					Field Detail
377				</div>
378				<for each="member" in="ownProperties">
379					<a name="{+Link.symbolNameToLinkName(member)+}"> </a>
380					<div class="fixedFont">{!
381						if (member.isPrivate) output += "&lt;private&gt; ";
382						if (member.isInner) output += "&lt;inner&gt; ";
383						if (member.isStatic) output += "&lt;static&gt; ";
384						if (member.isConstant) output += "&lt;constant&gt; ";
385					!}
386					
387					<if test="member.type"><span class="light">{{+new Link().toSymbol(member.type)+}}</span></if>
388					<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b>
389					
390					</div>
391					<div class="description">
392						{+resolveLinks(member.desc)+}
393						<if test="member.srcFile != data.srcFile">
394							<br />
395							<i>Defined in: </i> {+new Link().toSrc(member.srcFile)+}.
396						</if>
397						<if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
398					</div>
399					
400					<if test="member.example.length">
401					<for each="example" in="member.example">
402					<pre class="code">{+example+}</pre>
403					</for>
404					</if>
405
406						<if test="member.deprecated">
407							<dl class="detailList">
408							<dt class="heading">Deprecated:</dt>
409							<dt>
410								{+ resolveLinks(member.deprecated) +}
411							</dt>
412							</dl>
413						</if>
414						<if test="member.since">
415							<dl class="detailList">
416							<dt class="heading">Since:</dt>
417								<dd>{+ member.since +}</dd>
418							</dl>
419						</if>
420						<if test="member.see.length">
421							<dl class="detailList">
422							<dt class="heading">See:</dt>
423							<for each="item" in="member.see">
424							<dd>{+ new Link().toSymbol(item) +}</dd>
425							</for>
426							</dl>
427						</if>
428						<if test="member.defaultValue">
429							<dl class="detailList">
430							<dt class="heading">Default Value:</dt>
431							<dd>
432								{+resolveLinks(member.defaultValue)+}
433							</dd>
434							</dl>
435						</if>
436
437					<if test="!$member_last"><hr /></if>
438				</for>
439			</if>
440
441<!-- ============================== method details ========================= -->		
442			<if test="defined(ownMethods) && ownMethods.length">
443				<div class="sectionTitle">
444					Method Detail
445				</div>
446				<for each="member" in="ownMethods">
447					<a name="{+Link.symbolNameToLinkName(member)+}"> </a>
448					<div class="fixedFont">{!
449						if (member.isPrivate) output += "&lt;private&gt; ";
450						if (member.isInner) output += "&lt;inner&gt; ";
451						if (member.isStatic) output += "&lt;static&gt; ";
452					!}
453					
454					<if test="member.type"><span class="light">{{+new Link().toSymbol(member.type)+}}</span></if>
455					<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name.replace(/\^\d+$/, '')+}</b>{+makeSignature(member.params)+}
456					
457					</div>
458					<div class="description">
459						{+resolveLinks(member.desc)+}
460						<if test="member.srcFile != data.srcFile">
461							<br />
462							<i>Defined in: </i> {+new Link().toSrc(member.srcFile)+}.
463						</if>
464						<if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
465					</div>
466					
467					<if test="member.example.length">
468					<for each="example" in="member.example">
469					<pre class="code">{+example+}</pre>
470					</for>
471					</if>
472					
473						<if test="member.params.length">
474							<dl class="detailList">
475							<dt class="heading">Parameters:</dt>
476							<for each="item" in="member.params">
477								<dt>
478									{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}<b>{+item.name+}</b>
479									<if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
480								</dt>
481								<dd>{+resolveLinks(item.desc)+}</dd>
482							</for>
483							</dl>
484						</if>
485						<if test="member.deprecated">
486							<dl class="detailList">
487							<dt class="heading">Deprecated:</dt>
488							<dt>
489								{+ resolveLinks(member.deprecated) +}
490							</dt>
491							</dl>
492						</if>
493						<if test="member.since">
494							<dl class="detailList">
495							<dt class="heading">Since:</dt>
496								<dd>{+ member.since +}</dd>
497							</dl>
498							</dl>
499						</if>
500						<if test="member.exceptions.length">
501							<dl class="detailList">
502							<dt class="heading">Throws:</dt>
503							<for each="item" in="member.exceptions">
504								<dt>
505									{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
506								</dt>
507								<dd>{+resolveLinks(item.desc)+}</dd>
508							</for>
509							</dl>
510						</if>
511						<if test="member.returns.length">
512							<dl class="detailList">
513							<dt class="heading">Returns:</dt>
514							<for each="item" in="member.returns">
515								<dd>{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
516							</for>
517							</dl>
518						</if>
519						<if test="member.requires.length">
520							<dl class="detailList">
521							<dt class="heading">Requires:</dt>
522							<for each="item" in="member.requires">
523								<dd>{+ resolveLinks(item) +}</dd>
524							</for>
525							</dl>
526						</if>
527						<if test="member.see.length">
528							<dl class="detailList">
529							<dt class="heading">See:</dt>
530							<for each="item" in="member.see">
531								<dd>{+ new Link().toSymbol(item) +}</dd>
532							</for>
533							</dl>
534						</if>
535
536					<if test="!$member_last"><hr /></if>
537				</for>
538			</if>
539			
540<!-- ============================== event details ========================= -->		
541			<if test="defined(ownEvents) && ownEvents.length">
542				<div class="sectionTitle">
543					Event Detail
544				</div>
545				<for each="member" in="ownEvents">
546					<a name="{+Link.symbolNameToLinkName(member)+}"> </a>
547					<div class="fixedFont">{!
548						if (member.isPrivate) output += "&lt;private&gt; ";
549						if (member.isInner) output += "&lt;inner&gt; ";
550						if (member.isStatic) output += "&lt;static&gt; ";
551					!}
552					
553					<if test="member.type"><span class="light">{{+new Link().toSymbol(member.type)+}}</span></if>
554					<if test="member.isStatic && member.memberOf != '_global_'"><span class="light">{+member.memberOf+}.</span></if><b>{+member.name+}</b>{+makeSignature(member.params)+}
555					
556					</div>
557					<div class="description">
558						{+resolveLinks(member.desc)+}
559						<if test="member.srcFile != data.srcFile">
560							<br />
561							<i>Defined in: </i> {+new Link().toSrc(member.srcFile)+}.
562						</if>
563						<if test="member.author"><br /><i>Author: </i>{+member.author+}.</if>
564					</div>
565					
566					<if test="member.example.length">
567					<for each="example" in="member.example">
568					<pre class="code">{+example+}</pre>
569					</for>
570					</if>
571					
572						<if test="member.params.length">
573							<dl class="detailList">
574							<dt class="heading">Parameters:</dt>
575							<for each="item" in="member.params">
576								<dt>
577									{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}<b>{+item.name+}</b>
578									<if test="item.isOptional"><i>Optional<if test="item.defaultValue">, Default: {+item.defaultValue+}</if></i></if>
579								</dt>
580								<dd>{+ resolveLinks(item.desc) +}</dd>
581							</for>
582							</dl>
583						</if>
584						<if test="member.deprecated">
585							<dl class="detailList">
586							<dt class="heading">Deprecated:</dt>
587							<dt>
588								{+ resolveLinks(member.deprecated) +}
589							</dt>
590							</dl>
591						</if>
592						<if test="member.since">
593							<dl class="detailList">
594							<dt class="heading">Since:</dt>
595								<dd>{+ member.since +}</dd>
596							</dl>
597							</dl>
598						</if>
599						<if test="member.exceptions.length">
600							<dl class="detailList">
601							<dt class="heading">Throws:</dt>
602							<for each="item" in="member.exceptions">
603								<dt>
604									{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
605								</dt>
606								<dd>{+ resolveLinks(item.desc) +}</dd>
607							</for>
608							</dl>
609						</if>
610						<if test="member.returns.length">
611							<dl class="detailList">
612							<dt class="heading">Returns:</dt>
613							<for each="item" in="member.returns">
614								<dd>{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
615							</for>
616							</dl>
617						</if>
618						<if test="member.requires.length">
619							<dl class="detailList">
620							<dt class="heading">Requires:</dt>
621							<for each="item" in="member.requires">
622								<dd>{+ resolveLinks(item) +}</dd>
623							</for>
624							</dl>
625						</if>
626						<if test="member.see.length">
627							<dl class="detailList">
628							<dt class="heading">See:</dt>
629							<for each="item" in="member.see">
630								<dd>{+ new Link().toSymbol(item) +}</dd>
631							</for>
632							</dl>
633						</if>
634
635					<if test="!$member_last"><hr /></if>
636				</for>
637			</if>
638			
639			<hr />
640		</div>
641
642		
643<!-- ============================== footer ================================= -->
644		<div class="fineprint" style="clear:both">
645			<if test="JSDOC.opt.D.copyright">&copy;{+JSDOC.opt.D.copyright+}<br /></if>
646			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> {+JSDOC.VERSION+} on {+new Date()+}
647		</div>
648	</body>
649</html>