|
1 <html> |
|
2 <head> |
|
3 <title> Augmented Media Player v 0.06 | with JWplayer</title> |
|
4 |
|
5 <!-- |
|
6 - bouton play pause / |
|
7 - bouton next / before |
|
8 - bouton son |
|
9 - cliquer sur annotation affiche le contenu |
|
10 - quand sur ségment afficher l'annotation correspondante pendant x seconde |
|
11 - controleur |
|
12 |
|
13 |
|
14 # custom CSS citizen : |
|
15 - EEEEEE très clair |
|
16 - 8d8d8d Gris clair |
|
17 - 393939 Gris Fonçés |
|
18 - 11100F presque noir |
|
19 |
|
20 --> |
|
21 |
|
22 <!-- ***************************************************************** --> |
|
23 <!-- EXTERNAL JAVASCRIPT / JQUERY --> |
|
24 <script type="text/javascript" src="js/jquery-1.4.2.js"></script> |
|
25 <script type="text/javascript" src="js/ui/jquery.ui.core.js"></script> |
|
26 <script type="text/javascript" src="js/ui/jquery.ui.widget.js"></script> |
|
27 <script type="text/javascript" src="js/ui/jquery.ui.mouse.js"></script> |
|
28 <script type="text/javascript" src="js/ui/jquery.ui.slider.js"></script> |
|
29 <script type="text/javascript" src="js/ui/jquery.ui.button.js"></script> |
|
30 <script type="text/javascript" src="js/jquery.tools.min.js"></script> |
|
31 <!-- <script type="text/javascript" src="js/transBG.jquery.plugin.js"></script> --> |
|
32 <script type="text/javascript" src="js/swfobject.js"></script> |
|
33 <!-- INITIALISE JQUERY WITH NO CONFLICT VERSION --> |
|
34 <script> |
|
35 var $jIRI = jQuery.noConflict(); |
|
36 </script> |
|
37 |
|
38 <!-- ***************************************************************** --> |
|
39 <!-- CSS QUERY --> |
|
40 <link type="text/css" href="css/jq-css/themes/base/jquery.ui.all.css" rel="stylesheet" /> |
|
41 <link type="text/css" href="css/jq-css/demos.css" rel="stylesheet" /> |
|
42 |
|
43 <!-- ***************************************************************** --> |
|
44 <!-- Slider CSS NEEDED Range --> |
|
45 <style type="text/css"> |
|
46 #demo-frame > div.demo { padding: 5px !important; }; |
|
47 </style> |
|
48 |
|
49 <!-- ***************************************************************** --> |
|
50 <!-- CSS CUSTOM --> |
|
51 <style type="text/css"> |
|
52 .iri-chapter{ |
|
53 padding-top:10px; |
|
54 padding-bottom:5px; |
|
55 border-left:solid 1px #aaaaaa; |
|
56 border-right:solid 1px #aaaaaa;' |
|
57 } |
|
58 |
|
59 .tooltip { |
|
60 display:none; |
|
61 background:transparent url(css/tooltip/white_arrow.png); |
|
62 font-size:12px; |
|
63 height:100px; |
|
64 width:180px; |
|
65 padding:10px; |
|
66 padding-left:15px; |
|
67 padding-right:15px; |
|
68 color:#000; |
|
69 } |
|
70 |
|
71 .annotations{ |
|
72 } |
|
73 #ldtSaTitle{ |
|
74 padding-top:2px; |
|
75 font-size:18px; |
|
76 color:#FFF; |
|
77 height:22p; |
|
78 } |
|
79 #ldtSaDescription{ |
|
80 font-size:12px; |
|
81 color:#FFF; |
|
82 } |
|
83 #ShowAnnotation{ |
|
84 position: absolute; |
|
85 z-index: 999; |
|
86 padding:5px; |
|
87 background:url(css/custom-theme/images/trans.png);padding:5px; |
|
88 } |
|
89 </style> |
|
90 |
|
91 <!-- INTERFACE : SLIDER ( CONTROL BAR ) | BUTTON () --> |
|
92 <script type="text/javascript"> |
|
93 function createInterface (width,height,duration){ |
|
94 $jIRI(function() { |
|
95 |
|
96 $jIRI("#Annotations").width(width-(78*2)); |
|
97 $jIRI("#ShowAnnotation").width(width); |
|
98 //$jIRI("#ShowAnnotation").width(width); |
|
99 $jIRI("ldtSaTitle").width(width); |
|
100 $jIRI("ldtSaDescription").width(width); |
|
101 $jIRI("#controlerLdt").width(width); |
|
102 //$jIRI("#slider-range-min").roll |
|
103 $jIRI("#slider-range-min").slider({ //range: "min", |
|
104 value: 0, |
|
105 min: 1, |
|
106 max: duration/1000,//1:54:52.66 = 3600+3240+ |
|
107 step: 0.1, |
|
108 slide: function(event, ui) { |
|
109 |
|
110 //$jIRI("#amount").val(ui.value+" s"); |
|
111 player.sendEvent('SEEK', ui.value) |
|
112 //player.sendEvent('PAUSE') |
|
113 } |
|
114 }); |
|
115 $jIRI("#amount").val($jIRI("#slider-range-min").slider("value")+" s"); |
|
116 //var htmlStr = $jIRI("#slider-range-min").html(); |
|
117 |
|
118 $jIRI(".control1 button:first").button({ |
|
119 icons: { |
|
120 primary: 'ui-icon-play' |
|
121 }, |
|
122 text: false |
|
123 }).next().button({ |
|
124 icons: { |
|
125 primary: 'ui-icon-seek-next' |
|
126 }, |
|
127 text: false |
|
128 }); |
|
129 |
|
130 $jIRI(".control2 button:first").button({ |
|
131 icons: { |
|
132 primary: 'ui-icon-newwin'//, |
|
133 //secondary: 'ui-icon-volume-off' |
|
134 }, |
|
135 text: false |
|
136 }).next().button({ |
|
137 icons: { |
|
138 primary: 'ui-icon-volume-on' |
|
139 }, |
|
140 text: false |
|
141 }); |
|
142 }); |
|
143 } |
|
144 </script> |
|
145 |
|
146 <!-- CREER JW PLAYER creation + listener --> |
|
147 <script type="text/javascript"> |
|
148 |
|
149 var currentPosition = 0; |
|
150 var currentVolume = 50; |
|
151 var player = null; |
|
152 |
|
153 function playerReady(thePlayer) { |
|
154 //alert("ready"); |
|
155 player = window.document[thePlayer.id]; |
|
156 addListeners(); |
|
157 } |
|
158 |
|
159 function addListeners() { |
|
160 if (player) { |
|
161 player.addModelListener("TIME", "positionListener"); |
|
162 player.addControllerListener("VOLUME", "volumeListener"); |
|
163 } else { |
|
164 setTimeout("addListeners()",100); |
|
165 } |
|
166 |
|
167 |
|
168 // et changer les boutons |
|
169 |
|
170 |
|
171 } |
|
172 |
|
173 //function |
|
174 |
|
175 function positionListener(obj) { |
|
176 currentPosition = obj.position; |
|
177 var tmp = document.getElementById("posit"); |
|
178 if (tmp) { tmp.innerHTML = "position: " + currentPosition; } |
|
179 $jIRI("#slider-range-min").slider("value", obj.position); |
|
180 $jIRI("#amount").val(obj.position+" s"); |
|
181 // afficher annotation |
|
182 |
|
183 MyLdt.checkTime(currentPosition); |
|
184 } |
|
185 |
|
186 function volumeListener(obj) { |
|
187 currentVolume = obj.percentage; |
|
188 var tmp = document.getElementById("vol"); |
|
189 if (tmp) { tmp.innerHTML = "volume: " + currentVolume; } |
|
190 } |
|
191 |
|
192 function createPlayer(width,height,url) { |
|
193 var flashvars = { |
|
194 streamer:"rtmp://media.iri.centrepompidou.fr/ddc_player/", |
|
195 file:"video/stephenfrears_lesliaisonsdangereuses.flv", |
|
196 autostart:"true", |
|
197 controlbar:"none" |
|
198 } |
|
199 |
|
200 var params = { |
|
201 allowfullscreen:"true", |
|
202 allowscriptaccess:"always", |
|
203 wmode:"transparent" |
|
204 } |
|
205 |
|
206 var attributes = { |
|
207 id:"Ldtplayer1", |
|
208 name:"Ldtplayer1" |
|
209 } |
|
210 |
|
211 swfobject.embedSWF("swf/player.swf", "ldtPlaceHolder", width, height, "9.0.115", false, flashvars, params, attributes); |
|
212 } |
|
213 |
|
214 function streamOrNot(){ |
|
215 |
|
216 } |
|
217 |
|
218 function timeToPourcent(time,timetotal){ |
|
219 return (Math.round(time/timetotal*100)); |
|
220 } |
|
221 |
|
222 |
|
223 </script> |
|
224 |
|
225 <!-- LOAD JSON AND PARSE IT --> |
|
226 <script type="text/javascript"> |
|
227 |
|
228 var MyLdt; |
|
229 function loadJson (width,height,url){ |
|
230 |
|
231 $jIRI.getJSON(url, |
|
232 function(json){ |
|
233 /* START PARSING ----------------------- */ |
|
234 /* metas , medias , annotation-types , annotations , lists , tags , views */ |
|
235 /* # fonction avec 1 seul media et 1 seul annotation type code a cleaner */ |
|
236 //var MyLigne; |
|
237 |
|
238 /* # créer le player */ |
|
239 $jIRI.each(json.medias, function(i,item) { |
|
240 $jIRI("<div></div>").appendTo("#output"); |
|
241 MyMedia = new Media(item.id,item.url,item["dc:duration"],item['dc:title'],item['dc:description']); |
|
242 MyMedia.createPlayer(width,height); |
|
243 }); |
|
244 |
|
245 /* # créer la ligne */ |
|
246 $jIRI.each(json['annotation-types'], function(i,item) { |
|
247 |
|
248 MyLdt = new Ligne (item.id,item['dc:title'],item['dc:description']); |
|
249 |
|
250 }); |
|
251 |
|
252 /* # créer les annotations */ |
|
253 $jIRI.each(json.annotations, function(i,item) { |
|
254 |
|
255 MyLdt.addAnnotation( |
|
256 item.id, |
|
257 item.begin, |
|
258 item.end, |
|
259 item.media, |
|
260 item.content.title, |
|
261 item.content.description, |
|
262 item.content.color); |
|
263 |
|
264 }); |
|
265 |
|
266 |
|
267 $jIRI.each(json.lists, function(i,item) { |
|
268 trace("lists",""); |
|
269 }); |
|
270 |
|
271 $jIRI.each(json.tags, function(i,item) { |
|
272 trace("tags",""); |
|
273 }); |
|
274 |
|
275 $jIRI.each(json.views, function(i,item) { |
|
276 trace("views",""); |
|
277 }); |
|
278 |
|
279 |
|
280 /* END PARSING ----------------------- */ |
|
281 }); |
|
282 |
|
283 } |
|
284 |
|
285 function trace (msg,value){ |
|
286 $jIRI("<div>"+msg+" : "+value+"</div>").appendTo("#output"); |
|
287 } |
|
288 |
|
289 </script> |
|
290 |
|
291 <!-- INIT player LDT --> |
|
292 <script type="text/javascript"> |
|
293 |
|
294 function playerLdt (width,height,file){ |
|
295 loadJson(width,height,"js/cinelabModelV1.js"); |
|
296 } |
|
297 |
|
298 |
|
299 |
|
300 </script> |
|
301 |
|
302 <!-- API player --> |
|
303 <script type="text/javascript"> |
|
304 |
|
305 function APIplayer (){ |
|
306 |
|
307 } |
|
308 |
|
309 </script> |
|
310 |
|
311 <!-- Class Media --> |
|
312 <script type="text/javascript"> |
|
313 /* |
|
314 "http://advene.liris.cnrs.fr/ns/frame_of_reference/ms":"o=0", |
|
315 "id":"kia_closeup", |
|
316 "url":"D:/Thibaut/Outils_techno/IRI-LignesDeTemps/media/video/kia_closeup_BQ.flv", |
|
317 "dc:creator":"tcavalie", |
|
318 "dc:created":"2010-05-04T00:00:00", |
|
319 "dc:contributor":"tcavalie", |
|
320 "dc:modified":"2010-05-04T00:00:00", |
|
321 "dc:creator.contents":"Abbas Kiarostami", |
|
322 "dc:created.contents":"1990", |
|
323 "dc:title":"Close Up is a very very long title", |
|
324 "dc:description":"Analyse de Close Up", |
|
325 "dc:duration":"689266" |
|
326 */ |
|
327 function Media (id,url,duration,title,description){ |
|
328 this.id = id; |
|
329 this.url = url; |
|
330 this.title = title; |
|
331 this.description = description; |
|
332 this.duration = duration; |
|
333 |
|
334 this.lignes = new Array(); |
|
335 this.updatePlayer = updatePlayerMedia; |
|
336 this.getDuration = getMediaDuration; |
|
337 this.createPlayer = createPlayerMedia; |
|
338 |
|
339 trace("Media ID :",id); |
|
340 trace("Media URL :",this.url); |
|
341 trace("- content : color",url); |
|
342 trace("- content : audio",title); |
|
343 } |
|
344 function createPlayerMedia(width,height){ |
|
345 createPlayer(width,height,this.url,this.duration); |
|
346 createInterface(width,height,this.duration); |
|
347 } |
|
348 function updatePlayerMedia(){ |
|
349 |
|
350 } |
|
351 function getMediaDuration(){ |
|
352 return (this.duration); |
|
353 } |
|
354 function getMediaTitle(){ |
|
355 return (this.title); |
|
356 } |
|
357 |
|
358 </script> |
|
359 |
|
360 <!-- Class Ligne (annotationType) --> |
|
361 <script type="text/javascript"> |
|
362 /* |
|
363 "id":"dp_1", |
|
364 "dc:creator":"tcavalie", |
|
365 "dc:created":"2010-04-04T19:09:44", |
|
366 "dc:contributor":"perso", |
|
367 "dc:modified":"15/2/2008", |
|
368 "dc:title":"dqsdkljfh qklsdhf very very very long", |
|
369 "dc:description":"sdfg sdfg sdfg sdfg" |
|
370 */ |
|
371 function Ligne (){ |
|
372 this.id = id; |
|
373 this.title = title; |
|
374 this.description = description; |
|
375 this.annotations = new Array(); |
|
376 this.addAnnotation = addAnnotationligne; |
|
377 this.clickAnnotation= onClickLigneAnnotation; |
|
378 this.checkTime = checkTimeLigne; |
|
379 } |
|
380 |
|
381 function Ligne (id,title,description){ |
|
382 this.id = id; |
|
383 this.title = title; |
|
384 this.description = description; |
|
385 // |
|
386 this.annotations = new Array(); |
|
387 this.addAnnotation = addLigneAnnotation; |
|
388 this.checkTime = checkTimeLigne; |
|
389 } |
|
390 |
|
391 function addLigneAnnotation(id,begin,end,media,title,description,color){ |
|
392 var myAnnotation = new Annotation(id,begin,end,media,title,description,color); |
|
393 this.annotations.push(myAnnotation); |
|
394 } |
|
395 |
|
396 function onClickLigneAnnotation(id){ |
|
397 player.sendEvent('SEEK', this.start); |
|
398 } |
|
399 |
|
400 function searchLigneAnnotation(id){ |
|
401 /*for (){ |
|
402 }*/ |
|
403 } |
|
404 |
|
405 function listAnnotations(){ |
|
406 |
|
407 } |
|
408 |
|
409 function checkTimeLigne(time){ |
|
410 var annotationTempo; |
|
411 for (var i=0; i < this.annotations.length; ++i){ |
|
412 var annotationTempo = this.annotations[i]; |
|
413 //trace("check... ",time+" = "+annotationTempo.begin+" -- "+annotationTempo.end); |
|
414 //if (time>annotationTempo.begin){ |
|
415 if (time>annotationTempo.begin && time<annotationTempo.end){ |
|
416 //trace("check ",annotationTempo.begin+" "+annotationTempo.end +" "+annotationTempo.title); |
|
417 $jIRI("#ldtSaTitle").text(annotationTempo.title); |
|
418 $jIRI("#ldtSaDescription").text(annotationTempo.description); |
|
419 break; |
|
420 } |
|
421 } |
|
422 } |
|
423 |
|
424 </script> |
|
425 |
|
426 <!-- CLASSE Annotation --> |
|
427 <script type="text/javascript"> |
|
428 /* |
|
429 "begin":"767", |
|
430 "end":"785", |
|
431 "id":"dp_1_sp_3", |
|
432 "media":"kia_closeup", |
|
433 "content": { |
|
434 "mimetype":"application/x-ldt-structured", |
|
435 "title":"mon titre", |
|
436 "description":"ma description en <b>gras</b> .", |
|
437 "color":"16763904", |
|
438 "audio":{"src":"","mimetype":"audio/mp3","href":""} |
|
439 }, |
|
440 "meta": |
|
441 { |
|
442 "id-ref":"dp_1", |
|
443 "dc:creator":"tcavalie", |
|
444 "dc:created":"2010-04-04T19:09:44", |
|
445 "dc:contributor":"perso", |
|
446 "dc:modified":"9/10/2007" |
|
447 } |
|
448 */ |
|
449 |
|
450 function Annotation (){ |
|
451 this.id = null; |
|
452 this.begin = null; |
|
453 this.end = null; |
|
454 this.media = null; |
|
455 this.description = null; |
|
456 this.title = null; |
|
457 this.color = null; |
|
458 this.onRollOver = onRollOverAnnotation; |
|
459 this.onClick = onClickAnnotation; |
|
460 this.toolTip = rollOverAnnotation; |
|
461 this.draw = drawAnnotation; |
|
462 trace("annotation ","réussi") |
|
463 } |
|
464 |
|
465 function Annotation (id,begin,end,media,title,description,color){ |
|
466 this.id = id; |
|
467 this.begin = begin; |
|
468 this.end = end; |
|
469 this.media = media; |
|
470 this.description = description; |
|
471 this.title = title; |
|
472 this.color = title; |
|
473 // |
|
474 this.onRollOver = onRollOverAnnotation; |
|
475 //this.onClick = onClickAnnotation; |
|
476 this.toolTip = tootTipAnnotation; |
|
477 this.draw = drawAnnotation; |
|
478 //this.show = showAnnotationNotice; |
|
479 // draw it |
|
480 this.draw(); |
|
481 |
|
482 // |
|
483 trace("Annotation created : ",id); |
|
484 } |
|
485 |
|
486 function drawAnnotation (){ |
|
487 startPourcent = timeToPourcent(this.begin,6892.66); // temps du média |
|
488 endPourcent = timeToPourcent(this.end,6892.66)-startPourcent; |
|
489 trace(" ### START : ",startPourcent); |
|
490 trace(" ### END : ",endPourcent); |
|
491 |
|
492 $AnnotationTemplate = "<div title='"+this.title+"' id='"+this.id+"' class='ui-slider-range ui-slider-range-min ui-widget-header iri-chapter' width='100%' style='left:"+startPourcent+"%; width:"+endPourcent+"%; padding-top:15px; border-left:solid 1px #aaaaaa; border-right:solid 1px #aaaaaa;' onclick=\"player.sendEvent('SEEK', '"+this.begin+"');\" ></div>"; |
|
493 |
|
494 |
|
495 |
|
496 $toolTipTemplate = "<div class='tooltip'>" |
|
497 +"<div class='title'>"+this.title+"</div>" |
|
498 +"<div class='time'>"+this.begin+" : "+this.end+"</div>" |
|
499 +"<div class='description'>"+this.description+"</div>" |
|
500 +"</div>"; |
|
501 |
|
502 |
|
503 $jIRI("<div>"+$AnnotationTemplate+"</div>").appendTo("#Annotations"); |
|
504 $jIRI("#"+this.id).tooltip({ effect: 'slide'}); |
|
505 |
|
506 trace(" ### ","ADD ANOTATION : "+this.begin+" "+this.end+" "+this.title); |
|
507 } |
|
508 |
|
509 function tootTipAnnotation() { |
|
510 // 1 chercher le div correspondant |
|
511 // 2 y mettre les information |
|
512 return this.color + ' ' + this.type + ' apple'; |
|
513 } |
|
514 |
|
515 function onRollOverAnnotation(){ |
|
516 this.tootTip(); |
|
517 } |
|
518 |
|
519 <!-- ***************************************************************** --> |
|
520 <!-- Class tracess --> |
|
521 |
|
522 function Tracer (){ |
|
523 |
|
524 } |
|
525 |
|
526 function addTrace(){ |
|
527 |
|
528 } |
|
529 |
|
530 </script> |
|
531 |
|
532 <!-- TEST --> |
|
533 <script type="text/javascript"> |
|
534 /* |
|
535 var MyMedia = new Media("kia_closeup", |
|
536 "rtmp://media.iri.centrepompidou.fr/ddc_player/video/stephenfrears_lesliaisonsdangereuses.flv", |
|
537 "689266", |
|
538 "Liaison Dangereuse", |
|
539 "Blobal bla bla bla bla bla bla bla bla bla bla "); |
|
540 |
|
541 var MyLigne = new Ligne ("dp_1","titre ligne","description"); |
|
542 |
|
543 function addAnnotation(){ |
|
544 MyLigne.addAnnotation("test", |
|
545 5000, |
|
546 6500, |
|
547 "kia_closeup", |
|
548 "mon annotation", |
|
549 "ma description bla bla bla bla", |
|
550 "color"); |
|
551 //(id,begin,end,media,title,description,color) |
|
552 } |
|
553 |
|
554 */ |
|
555 |
|
556 </script> |
|
557 |
|
558 |
|
559 </head> |
|
560 |
|
561 |
|
562 <!-- createPlayer --> |
|
563 |
|
564 <body > |
|
565 |
|
566 |
|
567 |
|
568 <script type="text/javascript"> |
|
569 playerLdt(550,310,"http://www.cybunk.com/iritest/player-iri/js/cinelabModelV1.php"); |
|
570 </script> |
|
571 |
|
572 <div id="playerLdt"> |
|
573 |
|
574 <!-- VIDEO PLAYER --> |
|
575 <div id="ldtShow"> |
|
576 <!-- Zone Affichage annotation --> |
|
577 <div id="ShowAnnotation" class="demo" > |
|
578 <div id="ldtSaTitle">Test</div> |
|
579 <div id="ldtSaDescription">le journaliste et M. Ahankhah passent le portail et se dirigent vers la |
|
580 </div> |
|
581 <div id="ldtSaBoutons"> <a> Fermer </a></div> |
|
582 </div> |
|
583 <!-- Zone Player --> |
|
584 <div id="ldtPlaceHolder"> |
|
585 <a href="http://www.adobe.com/go/getflashplayer">Get flash</a> to see this player |
|
586 </div> |
|
587 </div> |
|
588 <!-- CONTROLER --> |
|
589 <div id="controlerLdt" class="demo"> |
|
590 <div class="control1" style="width:70px;float:left;"> |
|
591 <button id="ldtCtrlPlay" onclick="player.sendEvent('PLAY')">Play</button> |
|
592 <button id="ldtCtrlNext" onclick="player.sendEvent('SEEK', currentPosition+10)">next</button> |
|
593 </div> |
|
594 <div id="Annotations" class="ui-slider" style="padding-left:5px;width:470px;float:left;"> |
|
595 <div id="slider-range-min"></div> |
|
596 </div> |
|
597 <div class="control2" style="padding-left:10px;width:70px;float:left;"> |
|
598 <button id="ldtCtrlScreen" onclick="player.fullscreen('true')">Enlarge</button> |
|
599 <button id="ldtCtrlSound" onclick="player.sendEvent('MUTE')">Sound</button> |
|
600 </div> |
|
601 </div> |
|
602 <br/> |
|
603 <!-- DEBUG --> |
|
604 <div id="output" class="demo"></div> |
|
605 |
|
606 </div> |
|
607 <br/><br/><br/><br/><br/> |
|
608 |
|
609 <div> |
|
610 <!-- TESTS ET AUTRES --> |
|
611 <a href="#" onclick="player.sendEvent('PLAY')">play/pause toggle</a><br> |
|
612 <a href="#" onclick="player.sendEvent('STOP')">stop playing and buffering</a><br> |
|
613 <a href="#" onclick="player.sendEvent('SEEK', currentPosition+10)">seek current position +10 seconds</a><br> |
|
614 <a href="#" onclick="player.sendEvent('SEEK', currentPosition-10)">seek current position -10 seconds</a><br> |
|
615 <a href="#" onclick="player.sendEvent('VOLUME', currentVolume+10)">set current volume +10%</a><br> |
|
616 <a href="#" onclick="player.sendEvent('VOLUME', currentVolume-10)">set current volume -10%</a><br> |
|
617 <a href="#" onclick="slider.max=100">update slider </a><br> |
|
618 <div id="vol">vol</div> |
|
619 <div id="posit">posit</div> |
|
620 <div id="amount"></div> |
|
621 </div> |
|
622 |
|
623 |
|
624 </body> |
|
625 </html> |