chiark / gitweb /
For printable trading plan: example fetch rune
[ypp-sc-tools.db-test.git] / yarrg / example-plan.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <!--
3     This HTML is generated by the YARRG website, which is
4     Copyright 2009 Ian Jackson, Clare Boothby, Steve Early.
5
6     The YARRG website is Free Software and licenced according to the
7     GNU Affero General Public Licence (v3 or later).  See the link at
8     the bottom of this page for full licence and copyright
9     information.
10
11     Many YARRG web pages also display data from the YARRG database,
12     which contains mostly contributions from YARRG users and is not
13     covered by the AGPL.
14 -->
15
16
17
18
19 <html lang="en"><head><title>Trades for route - YARRG</title>
20 <style type="text/css">
21 body {
22   color: #000000;
23   background: #ffffff;
24 }
25 tr.datarow0 { background: #e3e3e3; }
26 tr.datarow1 { background: #ffffff; }
27 </style>
28 <script type="text/javascript">
29 <!--
30
31   function register_onload(f) {
32     var previous_onload= window.onload;
33     window.onload= function() {
34       if (previous_onload) previous_onload();
35       f();
36     };
37   }
38
39 // -->
40 </script>
41
42 </head><body>
43
44 <a href="lookup">YARRG</a> -
45  Yet Another Revenue Research Gatherer
46 |
47 <a href="intro">introduction</a>
48 |
49 <a href="docs">documentation</a>
50 |
51 <a href="devel">development</a>
52 <p>
53 Ocean: <b>Midnight</b>
54 |
55 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;capacitystring=&amp;ocean=Cobalt">
56 Cobalt</a>
57 |
58 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;capacitystring=&amp;ocean=Ice">
59 Ice</a>
60 |
61 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;capacitystring=&amp;ocean=Hunter">
62 Hunter</a>
63 |
64 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;capacitystring=&amp;ocean=Malachite">
65 Malachite</a>
66 |
67 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;capacitystring=&amp;ocean=Sage">
68 Sage</a>
69 |
70 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;capacitystring=&amp;ocean=Viridian">
71 Viridian</a>
72 |
73 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;capacitystring=&amp;ocean=Crimson">
74 Crimson</a><p>
75
76 Interface: <b>Type in names</b>
77 |
78 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;dropdowns=4&amp;capitalstring=&amp;capacitystring=">
79 Select from menus</a><p>
80
81 Query: <b>Trades for route</b>
82 |
83 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;query=commod&amp;capacitystring=">
84 Prices for commodity</a>
85 |
86 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;query=offers&amp;capacitystring=">
87 Offers at location</a>
88 |
89 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;query=age&amp;capacitystring=">
90 Data age</a><p>
91
92
93 <hr>
94
95
96
97 <h1>Specify route</h1>
98
99 <form action="lookup" method="post">
100
101 <b>Show total quantity at each price</b>
102 |
103 <a href="lookup?lossperleague=&amp;routestring=eta%2C+jorvik&amp;capitalstring=&amp;capacitystring=&amp;showstalls=1">
104 Show individual stalls</a><p>
105
106
107
108
109 Enter route (islands, or archipelagoes, separated by |s or commas;
110  abbreviations are OK):<br>
111
112
113 <script type="text/javascript">
114 <!--
115
116 rl_uri= "qtextstringcheck?format=application/json&ctype=text/xml"
117                 + "&what=routestring"
118                 + "&ocean=Midnight";
119
120 rl_timeout=false;
121 rl_request=false;
122 rl_done='';
123 rl_needed='';
124 function rl_Later(){
125   window.clearTimeout(rl_timeout);
126   rl_timeout = window.setTimeout(rl_Needed, 500);
127 }
128 function rl_Needed(){
129   window.clearTimeout(rl_timeout);
130   rl_element= document.getElementById('routestring');
131   rl_needed= rl_element.value;
132   rl_Request();
133 }
134 function rl_Request(){
135   if (rl_request || rl_needed==rl_done) return;
136   rl_done= rl_needed;
137   rl_request= new XMLHttpRequest();
138   uri= rl_uri+'&string='+encodeURIComponent(rl_needed);
139   rl_request.open('GET', uri);
140   rl_request.onreadystatechange= rl_Ready;
141   rl_request.send(null);
142 }
143 function rl_Ready() {
144   if (rl_request.readyState != 4) return;
145   if (rl_request.status == 200) {
146     response= rl_request.responseText;
147     debug('rl_ got '+response);
148     eval('results='+response);
149     toedit= document.getElementById('rl_results');
150     toedit.innerHTML= results.show;
151   }
152   rl_request= false;
153   rl_Request();
154 }
155 register_onload(rl_Needed);
156
157 // -->
158 </script>
159
160
161 <input type="text" 
162  size=80
163
164  id="routestring" name="routestring"
165  onchange="rl_Needed();" onkeyup="rl_Later();"
166  value="eta, jorvik"
167  >
168 <br>
169 <div id="rl_results">&nbsp;</div><br>
170
171
172
173
174
175
176
177
178 <strong>Advanced options - you may leave these blank:</strong>
179 <p>
180 <table><tr><td>
181
182 Vessel or capacity:
183
184 <script type="text/javascript">
185 <!--
186
187 cs_uri= "qtextstringcheck?format=application/json&ctype=text/xml"
188                 + "&what=capacitystring"
189                 + "&ocean=Midnight";
190
191 cs_timeout=false;
192 cs_request=false;
193 cs_done='';
194 cs_needed='';
195 function cs_Later(){
196   window.clearTimeout(cs_timeout);
197   cs_timeout = window.setTimeout(cs_Needed, 500);
198 }
199 function cs_Needed(){
200   window.clearTimeout(cs_timeout);
201   cs_element= document.getElementById('capacitystring');
202   cs_needed= cs_element.value;
203   cs_Request();
204 }
205 function cs_Request(){
206   if (cs_request || cs_needed==cs_done) return;
207   cs_done= cs_needed;
208   cs_request= new XMLHttpRequest();
209   uri= cs_uri+'&string='+encodeURIComponent(cs_needed);
210   cs_request.open('GET', uri);
211   cs_request.onreadystatechange= cs_Ready;
212   cs_request.send(null);
213 }
214 function cs_Ready() {
215   if (cs_request.readyState != 4) return;
216   if (cs_request.status == 200) {
217     response= cs_request.responseText;
218     debug('cs_ got '+response);
219     eval('results='+response);
220     toedit= document.getElementById('cs_results');
221     toedit.innerHTML= results.show;
222   }
223   cs_request= false;
224   cs_Request();
225 }
226 register_onload(cs_Needed);
227
228 // -->
229 </script>
230
231
232 <input type="text" 
233  size=40
234
235  id="capacitystring" name="capacitystring"
236  onchange="cs_Needed();" onkeyup="cs_Later();"
237  value=""
238  ><a href="docs#capacity">[?]</a>
239 <br>
240 <div id="cs_results">&nbsp;</div><br>
241
242
243
244
245
246
247 <td>
248 &nbsp;
249 &nbsp;
250
251 <td>
252 Expected losses:
253
254
255 <script type="text/javascript">
256 <!--
257
258 ll_uri= "qtextstringcheck?format=application/json&ctype=text/xml"
259                 + "&what=lossperleague"
260                 + "&ocean=Midnight";
261
262 ll_timeout=false;
263 ll_request=false;
264 ll_done='';
265 ll_needed='';
266 function ll_Later(){
267   window.clearTimeout(ll_timeout);
268   ll_timeout = window.setTimeout(ll_Needed, 500);
269 }
270 function ll_Needed(){
271   window.clearTimeout(ll_timeout);
272   ll_element= document.getElementById('lossperleague');
273   ll_needed= ll_element.value;
274   ll_Request();
275 }
276 function ll_Request(){
277   if (ll_request || ll_needed==ll_done) return;
278   ll_done= ll_needed;
279   ll_request= new XMLHttpRequest();
280   uri= ll_uri+'&string='+encodeURIComponent(ll_needed);
281   ll_request.open('GET', uri);
282   ll_request.onreadystatechange= ll_Ready;
283   ll_request.send(null);
284 }
285 function ll_Ready() {
286   if (ll_request.readyState != 4) return;
287   if (ll_request.status == 200) {
288     response= ll_request.responseText;
289     debug('ll_ got '+response);
290     eval('results='+response);
291     toedit= document.getElementById('ll_results');
292     toedit.innerHTML= results.show;
293   }
294   ll_request= false;
295   ll_Request();
296 }
297 register_onload(ll_Needed);
298
299 // -->
300 </script>
301
302
303 <input type="text" 
304  size=9
305
306  id="lossperleague" name="lossperleague"
307  onchange="ll_Needed();" onkeyup="ll_Later();"
308  value=""
309  ><a href="docs#losses">[?]</a>
310 <br>
311 <div id="ll_results">&nbsp;</div><br>
312
313
314
315
316
317
318 </table>
319 <table><tr>
320
321 <td>Available capital:
322
323
324 <script type="text/javascript">
325 <!--
326
327 ac_uri= "qtextstringcheck?format=application/json&ctype=text/xml"
328                 + "&what=capitalstring"
329                 + "&ocean=Midnight";
330
331 ac_timeout=false;
332 ac_request=false;
333 ac_done='';
334 ac_needed='';
335 function ac_Later(){
336   window.clearTimeout(ac_timeout);
337   ac_timeout = window.setTimeout(ac_Needed, 500);
338 }
339 function ac_Needed(){
340   window.clearTimeout(ac_timeout);
341   ac_element= document.getElementById('capitalstring');
342   ac_needed= ac_element.value;
343   ac_Request();
344 }
345 function ac_Request(){
346   if (ac_request || ac_needed==ac_done) return;
347   ac_done= ac_needed;
348   ac_request= new XMLHttpRequest();
349   uri= ac_uri+'&string='+encodeURIComponent(ac_needed);
350   ac_request.open('GET', uri);
351   ac_request.onreadystatechange= ac_Ready;
352   ac_request.send(null);
353 }
354 function ac_Ready() {
355   if (ac_request.readyState != 4) return;
356   if (ac_request.status == 200) {
357     response= ac_request.responseText;
358     debug('ac_ got '+response);
359     eval('results='+response);
360     toedit= document.getElementById('ac_results');
361     toedit.innerHTML= results.show;
362   }
363   ac_request= false;
364   ac_Request();
365 }
366 register_onload(ac_Needed);
367
368 // -->
369 </script>
370
371
372 <input type="text" 
373  size=9
374
375  id="capitalstring" name="capitalstring"
376  onchange="ac_Needed();" onkeyup="ac_Later();"
377  value=""
378  ><a href="docs#capital">[?]</a>
379 <br>
380 <div id="ac_results">&nbsp;</div><br>
381
382
383
384
385
386
387 </table>
388
389
390 <input type=submit name=submit value="Update">
391
392
393
394
395
396 <h1>Relevant trades</h1>
397 <script type="text/javascript">
398 <!--
399
400   da_pageload= Date.now();
401
402 // -->
403 </script>
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516 <table id="trades" rules=groups>
517 <colgroup span=1>
518 <colgroup span=2>
519
520 <colgroup span=1>
521 <colgroup span=2>
522 <colgroup span=2>
523 <colgroup span=2>
524 <colgroup span=3>
525 <colgroup span=3>
526 <colgroup span=3>
527 <tr class="spong">
528 <th>
529 <th>Collect
530 <th>Deliver
531 <th>
532 <th colspan=2>Collect
533 <th colspan=2>Deliver
534 <th colspan=2>Profit
535 <th colspan=3>Max
536 <th colspan=1>
537 <th colspan=2>Max
538 <th colspan=3>Planned
539
540 <tr>
541 <th>
542 <th>Island 
543 <th>Island 
544 <th>Commodity
545 <th>Price
546 <th>Qty
547 <th>Price
548 <th>Qty
549 <th>Margin
550 <th>Unit
551 <th>Qty
552 <th>Capital
553 <th>Profit
554 <th>Dist
555 <th>Mass
556 <th>Vol
557 <th>Qty
558 <th>Capital
559 <th>Profit
560
561 <tr id="trades_sort">
562 <th>
563 <th>
564 <th>
565 <th>
566 <th>
567 <th>
568 <th>
569 <th>
570 <th>
571 <th>
572 <th>
573 <th>
574 <th>
575 <th>
576 <th>
577 <th>
578 <th>
579 <th>
580 <th>
581
582 <tr id="id_row_XcIbTKbU" class="datarow0">
583 <td><input type=hidden   name=RXcIbTKbU value="">
584     <input type=checkbox name=TXcIbTKbU value=""
585        checked >
586 <td colspan=1 >Eta Island
587 <td colspan=1 >Jorvik Island
588 <td colspan=1 >Iron
589 <td colspan=1 align=right>14
590 <td colspan=1 align=right>2795
591 <td colspan=1 align=right>15
592 <td colspan=1 align=right>21
593 <td colspan=1 align=right>7.1%
594 <td colspan=1 align=right>1
595 <td colspan=1 align=right>21
596 <td colspan=1 align=right>294
597 <td colspan=1 align=right>21
598 <td colspan=1 align=right>5
599 <td colspan=1 align=right>0.2
600 <td colspan=1 align=right>0.0
601 <td colspan=1 align=right>
602 <td colspan=1 align=right>
603 <td colspan=1 align=right>
604 <tr id="id_row_UgIb1Kb4" class="datarow1">
605 <td><input type=hidden   name=RUgIb1Kb4 value="">
606     <input type=checkbox name=TUgIb1Kb4 value=""
607        checked >
608 <td colspan=1 >Eta Island
609 <td colspan=1 >Jorvik Island
610 <td colspan=1 >Wood
611 <td colspan=1 align=right>22
612 <td colspan=1 align=right>276
613 <td colspan=1 align=right>25
614 <td colspan=1 align=right>839
615 <td colspan=1 align=right>13.6%
616 <td colspan=1 align=right>3
617 <td colspan=1 align=right>276
618 <td colspan=1 align=right>6072
619 <td colspan=1 align=right>828
620 <td colspan=1 align=right>5
621 <td colspan=1 align=right>48.3
622 <td colspan=1 align=right>69.0
623 <td colspan=1 align=right>192
624 <td colspan=1 align=right>4224
625 <td colspan=1 align=right>576
626 <tr id="id_row_UgIb1Kb3" class="datarow0">
627 <td><input type=hidden   name=RUgIb1Kb3 value="">
628     <input type=checkbox name=TUgIb1Kb3 value=""
629        checked >
630 <td colspan=1 >Eta Island
631 <td colspan=1 >Jorvik Island
632 <td colspan=1 >Wood
633 <td colspan=1 align=right>22
634 <td colspan=1 align=right>276
635 <td colspan=1 align=right>24
636 <td colspan=1 align=right>1786
637 <td colspan=1 align=right>9.1%
638 <td colspan=1 align=right>2
639 <td colspan=1 align=right>276
640 <td colspan=1 align=right>6072
641 <td colspan=1 align=right>552
642 <td colspan=1 align=right>5
643 <td colspan=1 align=right>48.3
644 <td colspan=1 align=right>69.0
645 <td colspan=1 align=right>84
646 <td colspan=1 align=right>1848
647 <td colspan=1 align=right>168
648 <tr id="id_row_UgIb2Kb4" class="datarow1">
649 <td><input type=hidden   name=RUgIb2Kb4 value="">
650     <input type=checkbox name=TUgIb2Kb4 value=""
651        checked >
652 <td colspan=1 >Eta Island
653 <td colspan=1 >Jorvik Island
654 <td colspan=1 >Wood
655 <td colspan=1 align=right>23
656 <td colspan=1 align=right>647
657 <td colspan=1 align=right>25
658 <td colspan=1 align=right>839
659 <td colspan=1 align=right>8.7%
660 <td colspan=1 align=right>2
661 <td colspan=1 align=right>647
662 <td colspan=1 align=right>14881
663 <td colspan=1 align=right>1294
664 <td colspan=1 align=right>5
665 <td colspan=1 align=right>113.2
666 <td colspan=1 align=right>161.8
667 <td colspan=1 align=right>647
668 <td colspan=1 align=right>14881
669 <td colspan=1 align=right>1294
670 <tr id="id_row_UgIb1Kb2" class="datarow0">
671 <td><input type=hidden   name=RUgIb1Kb2 value="">
672     <input type=checkbox name=TUgIb1Kb2 value=""
673        checked >
674 <td colspan=1 >Eta Island
675 <td colspan=1 >Jorvik Island
676 <td colspan=1 >Wood
677 <td colspan=1 align=right>22
678 <td colspan=1 align=right>276
679 <td colspan=1 align=right>23
680 <td colspan=1 align=right>233
681 <td colspan=1 align=right>4.5%
682 <td colspan=1 align=right>1
683 <td colspan=1 align=right>233
684 <td colspan=1 align=right>5126
685 <td colspan=1 align=right>233
686 <td colspan=1 align=right>5
687 <td colspan=1 align=right>40.8
688 <td colspan=1 align=right>58.2
689 <td colspan=1 align=right>
690 <td colspan=1 align=right>
691 <td colspan=1 align=right>
692 <tr id="id_row_UgIb2Kb3" class="datarow1">
693 <td><input type=hidden   name=RUgIb2Kb3 value="">
694     <input type=checkbox name=TUgIb2Kb3 value=""
695        checked >
696 <td colspan=1 >Eta Island
697 <td colspan=1 >Jorvik Island
698 <td colspan=1 >Wood
699 <td colspan=1 align=right>23
700 <td colspan=1 align=right>647
701 <td colspan=1 align=right>24
702 <td colspan=1 align=right>1786
703 <td colspan=1 align=right>4.3%
704 <td colspan=1 align=right>1
705 <td colspan=1 align=right>647
706 <td colspan=1 align=right>14881
707 <td colspan=1 align=right>647
708 <td colspan=1 align=right>5
709 <td colspan=1 align=right>113.2
710 <td colspan=1 align=right>161.8
711 <td colspan=1 align=right>
712 <td colspan=1 align=right>
713 <td colspan=1 align=right>
714 <tr id="id_row_UgIb3Kb4" class="datarow0">
715 <td><input type=hidden   name=RUgIb3Kb4 value="">
716     <input type=checkbox name=TUgIb3Kb4 value=""
717        checked >
718 <td colspan=1 >Eta Island
719 <td colspan=1 >Jorvik Island
720 <td colspan=1 >Wood
721 <td colspan=1 align=right>24
722 <td colspan=1 align=right>301
723 <td colspan=1 align=right>25
724 <td colspan=1 align=right>839
725 <td colspan=1 align=right>4.2%
726 <td colspan=1 align=right>1
727 <td colspan=1 align=right>301
728 <td colspan=1 align=right>7224
729 <td colspan=1 align=right>301
730 <td colspan=1 align=right>5
731 <td colspan=1 align=right>52.7
732 <td colspan=1 align=right>75.2
733 <td colspan=1 align=right>
734 <td colspan=1 align=right>
735 <td colspan=1 align=right>
736 <tr id="id_row_XcKbTKbU" class="datarow1">
737 <td><input type=hidden   name=RXcKbTKbU value="">
738     <input type=checkbox name=TXcKbTKbU value=""
739        checked >
740 <td colspan=1 >Jorvik Island
741 <td colspan=1 >Jorvik Island
742 <td colspan=1 >Iron
743 <td colspan=1 align=right>14
744 <td colspan=1 align=right>1001
745 <td colspan=1 align=right>15
746 <td colspan=1 align=right>21
747 <td colspan=1 align=right>7.1%
748 <td colspan=1 align=right>1
749 <td colspan=1 align=right>21
750 <td colspan=1 align=right>294
751 <td colspan=1 align=right>21
752 <td colspan=1 align=right>
753 <td colspan=1 align=right>0.2
754 <td colspan=1 align=right>0.0
755 <td colspan=1 align=right>21
756 <td colspan=1 align=right>294
757 <td colspan=1 align=right>21
758 <tr id="id_row_OfKbZbKb7b" class="datarow0">
759 <td><input type=hidden   name=ROfKbZbKb7b value="">
760     <input type=checkbox name=TOfKbZbKb7b value=""
761        checked >
762 <td colspan=1 >Jorvik Island
763 <td colspan=1 >Jorvik Island
764 <td colspan=1 >Rambutan
765 <td colspan=1 align=right>51
766 <td colspan=1 align=right>2
767 <td colspan=1 align=right>59
768 <td colspan=1 align=right>1000
769 <td colspan=1 align=right>15.7%
770 <td colspan=1 align=right>8
771 <td colspan=1 align=right>2
772 <td colspan=1 align=right>102
773 <td colspan=1 align=right>16
774 <td colspan=1 align=right>
775 <td colspan=1 align=right>0.2
776 <td colspan=1 align=right>0.2
777 <td colspan=1 align=right>2
778 <td colspan=1 align=right>102
779 <td colspan=1 align=right>16
780 <tr id="trades_total">
781 <th>
782 <th colspan=2>Total
783 <td align=right>
784 <td align=right>
785 <td align=right>
786 <td align=right>
787 <td align=right>
788 <td align=right>
789 <td align=right>
790 <td align=right>
791 <td align=right>
792 <td align=right>
793 <td align=right>
794 <td align=right>
795 417.1
796 <td align=right>
797 595.2
798 <td align=right>
799 <td align=right>
800 21349
801 <td align=right>
802 2075
803 </table>
804
805
806
807
808 <script type="text/javascript">
809 <!--
810
811
812
813   ts_sortkeys= {"11":{"id_row_XcIbTKbU":294,"id_row_UgIb3Kb4":7224,"id_row_UgIb1Kb2":5126,"id_row_UgIb2Kb4":14881,"id_row_OfKbZbKb7b":102,"id_row_UgIb2Kb3":14881,"id_row_XcKbTKbU":294,"id_row_UgIb1Kb3":6072,"id_row_UgIb1Kb4":6072},"7":{"id_row_XcIbTKbU":21,"id_row_UgIb3Kb4":839,"id_row_UgIb1Kb2":233,"id_row_UgIb2Kb4":839,"id_row_OfKbZbKb7b":1000,"id_row_UgIb2Kb3":1786,"id_row_XcKbTKbU":21,"id_row_UgIb1Kb3":1786,"id_row_UgIb1Kb4":839},"17":{"id_row_XcIbTKbU":"","id_row_UgIb3Kb4":"","id_row_UgIb1Kb2":"","id_row_UgIb2Kb4":14881,"id_row_OfKbZbKb7b":102,"id_row_UgIb2Kb3":"","id_row_XcKbTKbU":294,"id_row_UgIb1Kb3":1848,"id_row_UgIb1Kb4":4224},"2":{"id_row_XcIbTKbU":"Jorvik Island","id_row_UgIb3Kb4":"Jorvik Island","id_row_UgIb1Kb2":"Jorvik Island","id_row_UgIb2Kb4":"Jorvik Island","id_row_OfKbZbKb7b":"Jorvik Island","id_row_UgIb2Kb3":"Jorvik Island","id_row_XcKbTKbU":"Jorvik Island","id_row_UgIb1Kb3":"Jorvik Island","id_row_UgIb1Kb4":"Jorvik Island"},"1":{"id_row_XcIbTKbU":"Eta Island","id_row_UgIb3Kb4":"Eta Island","id_row_UgIb1Kb2":"Eta Island","id_row_UgIb2Kb4":"Eta Island","id_row_OfKbZbKb7b":"Jorvik Island","id_row_UgIb2Kb3":"Eta Island","id_row_XcKbTKbU":"Jorvik Island","id_row_UgIb1Kb3":"Eta Island","id_row_UgIb1Kb4":"Eta Island"},"18":{"id_row_XcIbTKbU":"","id_row_UgIb3Kb4":"","id_row_UgIb1Kb2":"","id_row_UgIb2Kb4":1294,"id_row_OfKbZbKb7b":16,"id_row_UgIb2Kb3":"","id_row_XcKbTKbU":21,"id_row_UgIb1Kb3":168,"id_row_UgIb1Kb4":576},"16":{"id_row_XcIbTKbU":"","id_row_UgIb3Kb4":"","id_row_UgIb1Kb2":"","id_row_UgIb2Kb4":647,"id_row_OfKbZbKb7b":2,"id_row_UgIb2Kb3":"","id_row_XcKbTKbU":21,"id_row_UgIb1Kb3":84,"id_row_UgIb1Kb4":192},"13":{"id_row_XcIbTKbU":5,"id_row_UgIb3Kb4":5,"id_row_UgIb1Kb2":5,"id_row_UgIb2Kb4":5,"id_row_OfKbZbKb7b":"","id_row_UgIb2Kb3":5,"id_row_XcKbTKbU":"","id_row_UgIb1Kb3":5,"id_row_UgIb1Kb4":5},"6":{"id_row_XcIbTKbU":"15","id_row_UgIb3Kb4":"25","id_row_UgIb1Kb2":"23","id_row_UgIb2Kb4":"25","id_row_OfKbZbKb7b":"59","id_row_UgIb2Kb3":"24","id_row_XcKbTKbU":"15","id_row_UgIb1Kb3":"24","id_row_UgIb1Kb4":"25"},"3":{"id_row_XcIbTKbU":"Iron","id_row_UgIb3Kb4":"Wood","id_row_UgIb1Kb2":"Wood","id_row_UgIb2Kb4":"Wood","id_row_OfKbZbKb7b":"Rambutan","id_row_UgIb2Kb3":"Wood","id_row_XcKbTKbU":"Iron","id_row_UgIb1Kb3":"Wood","id_row_UgIb1Kb4":"Wood"},"9":{"id_row_XcIbTKbU":1,"id_row_UgIb3Kb4":1,"id_row_UgIb1Kb2":1,"id_row_UgIb2Kb4":2,"id_row_OfKbZbKb7b":8,"id_row_UgIb2Kb3":1,"id_row_XcKbTKbU":1,"id_row_UgIb1Kb3":2,"id_row_UgIb1Kb4":3},"12":{"id_row_XcIbTKbU":21,"id_row_UgIb3Kb4":301,"id_row_UgIb1Kb2":233,"id_row_UgIb2Kb4":1294,"id_row_OfKbZbKb7b":16,"id_row_UgIb2Kb3":647,"id_row_XcKbTKbU":21,"id_row_UgIb1Kb3":552,"id_row_UgIb1Kb4":828},"15":{"id_row_XcIbTKbU":21000,"id_row_UgIb3Kb4":75250000,"id_row_UgIb1Kb2":58250000,"id_row_UgIb2Kb4":161750000,"id_row_OfKbZbKb7b":200000,"id_row_UgIb2Kb3":161750000,"id_row_XcKbTKbU":21000,"id_row_UgIb1Kb3":69000000,"id_row_UgIb1Kb4":69000000},"14":{"id_row_XcIbTKbU":163800,"id_row_UgIb3Kb4":52675000,"id_row_UgIb1Kb2":40775000,"id_row_UgIb2Kb4":113225000,"id_row_OfKbZbKb7b":250000,"id_row_UgIb2Kb3":113225000,"id_row_XcKbTKbU":163800,"id_row_UgIb1Kb3":48300000,"id_row_UgIb1Kb4":48300000},"8":{"id_row_XcIbTKbU":"10714","id_row_UgIb3Kb4":"10416","id_row_UgIb1Kb2":"10454","id_row_UgIb2Kb4":"10869","id_row_OfKbZbKb7b":"11568","id_row_UgIb2Kb3":"10434","id_row_XcKbTKbU":"10714","id_row_UgIb1Kb3":"10909","id_row_UgIb1Kb4":"11363"},"4":{"id_row_XcIbTKbU":"14","id_row_UgIb3Kb4":"24","id_row_UgIb1Kb2":"22","id_row_UgIb2Kb4":"23","id_row_OfKbZbKb7b":"51","id_row_UgIb2Kb3":"23","id_row_XcKbTKbU":"14","id_row_UgIb1Kb3":"22","id_row_UgIb1Kb4":"22"},"10":{"id_row_XcIbTKbU":21,"id_row_UgIb3Kb4":301,"id_row_UgIb1Kb2":233,"id_row_UgIb2Kb4":647,"id_row_OfKbZbKb7b":2,"id_row_UgIb2Kb3":647,"id_row_XcKbTKbU":21,"id_row_UgIb1Kb3":276,"id_row_UgIb1Kb4":276},"5":{"id_row_XcIbTKbU":2795,"id_row_UgIb3Kb4":301,"id_row_UgIb1Kb2":276,"id_row_UgIb2Kb4":647,"id_row_OfKbZbKb7b":2,"id_row_UgIb2Kb3":647,"id_row_XcKbTKbU":1001,"id_row_UgIb1Kb3":276,"id_row_UgIb1Kb4":276}};
814
815 function ts_s_trades(compar) {
816   debug('sorting compar='+compar);
817   var table= document.getElementById('trades');
818   var firstrow= table.getElementsByTagName('tr').item(0);
819   var tbody= firstrow.parentNode
820   var rows= tbody.childNodes
821   var newrows= new Array;
822   var finalrows= new Array;
823   var rowix= 0;
824   for (; rowix < rows.length; rowix++) {
825     var row= rows.item(rowix);
826     if (row.id == 'trades_sort') break;
827     debug('skip row '+rowix+' [[ '+row+' ]] id='+row.id);
828   }
829   rowix++;
830   for (; rowix < rows.length; rowix++) {
831     var row= rows.item(rowix);
832     if (row.id == 'trades_total') break;
833     if (!row.id) { debug('noid row '+rowix+' [[ '+row+' ]]'); continue; }
834     if (row.tagName != 'TR') {
835       debug('no-tr row '+rowix+' tagName='+row.tagName+' [[ '+row+' ]]');
836       continue;
837     }
838     debug('process row '+rowix+' [[ '+row+' ]] id='+row.id);
839     newrows.push(row);
840   }
841   for (; rowix < rows.length; rowix++) {
842     var row= rows.item(rowix);
843     finalrows.push(row);
844     debug('final row '+rowix+' [[ '+row+' ]]');
845   }
846   newrows.sort(compar);
847   for (var rowix=0; rowix < newrows.length; rowix++) {
848     var row= newrows[rowix];
849     var classname= 'datarow'+(rowix % 2);
850     debug('fix row '+rowix+' class '+classname);
851     row.className= classname;
852   }
853   newrows= newrows.concat(finalrows);
854   for (var rowix=0; rowix < newrows.length; rowix++) {
855     var row= newrows[rowix];
856     debug('add row '+rowix+' [[ '+row+' ]]');
857     tbody.appendChild(row);
858   }
859 }
860
861
862 function ts_1m_trades(re) {
863   var rowid = re.id;
864   return ts_sortkeys[1][rowid];
865 }
866
867 function ts_1c0_trades(a,b) {
868   var ak = ts_1m_trades(a);
869   var bk = ts_1m_trades(b);
870   if (ak < bk) return -1;
871   if (ak > bk) return +1;
872   return 0;
873 }
874
875
876 function ts_2m_trades(re) {
877   var rowid = re.id;
878   return ts_sortkeys[2][rowid];
879 }
880
881 function ts_2c0_trades(a,b) {
882   var ak = ts_2m_trades(a);
883   var bk = ts_2m_trades(b);
884   if (ak < bk) return -1;
885   if (ak > bk) return +1;
886   return 0;
887 }
888
889
890 function ts_3m_trades(re) {
891   var rowid = re.id;
892   return ts_sortkeys[3][rowid];
893 }
894
895 function ts_3c0_trades(a,b) {
896   var ak = ts_3m_trades(a);
897   var bk = ts_3m_trades(b);
898   if (ak < bk) return -1;
899   if (ak > bk) return +1;
900   return 0;
901 }
902
903
904 function ts_4m_trades(re) {
905   var rowid = re.id;
906   return ts_sortkeys[4][rowid];
907 }
908
909 function ts_4c0_trades(a,b) {
910   var ak = ts_4m_trades(a);
911   var bk = ts_4m_trades(b);
912   return ak - bk
913 }
914
915 function ts_4c1_trades(a,b) { return -ts_4c0_trades(a,b); }
916
917
918 function ts_5m_trades(re) {
919   var rowid = re.id;
920   return ts_sortkeys[5][rowid];
921 }
922
923 function ts_5c0_trades(a,b) {
924   var ak = ts_5m_trades(a);
925   var bk = ts_5m_trades(b);
926   return ak - bk
927 }
928
929 function ts_5c1_trades(a,b) { return -ts_5c0_trades(a,b); }
930
931
932 function ts_6m_trades(re) {
933   var rowid = re.id;
934   return ts_sortkeys[6][rowid];
935 }
936
937 function ts_6c0_trades(a,b) {
938   var ak = ts_6m_trades(a);
939   var bk = ts_6m_trades(b);
940   return ak - bk
941 }
942
943 function ts_6c1_trades(a,b) { return -ts_6c0_trades(a,b); }
944
945
946 function ts_7m_trades(re) {
947   var rowid = re.id;
948   return ts_sortkeys[7][rowid];
949 }
950
951 function ts_7c0_trades(a,b) {
952   var ak = ts_7m_trades(a);
953   var bk = ts_7m_trades(b);
954   return ak - bk
955 }
956
957 function ts_7c1_trades(a,b) { return -ts_7c0_trades(a,b); }
958
959
960 function ts_8m_trades(re) {
961   var rowid = re.id;
962   return ts_sortkeys[8][rowid];
963 }
964
965 function ts_8c0_trades(a,b) {
966   var ak = ts_8m_trades(a);
967   var bk = ts_8m_trades(b);
968   return ak - bk
969 }
970
971 function ts_8c1_trades(a,b) { return -ts_8c0_trades(a,b); }
972
973
974 function ts_9m_trades(re) {
975   var rowid = re.id;
976   return ts_sortkeys[9][rowid];
977 }
978
979 function ts_9c0_trades(a,b) {
980   var ak = ts_9m_trades(a);
981   var bk = ts_9m_trades(b);
982   return ak - bk
983 }
984
985 function ts_9c1_trades(a,b) { return -ts_9c0_trades(a,b); }
986
987
988 function ts_10m_trades(re) {
989   var rowid = re.id;
990   return ts_sortkeys[10][rowid];
991 }
992
993 function ts_10c0_trades(a,b) {
994   var ak = ts_10m_trades(a);
995   var bk = ts_10m_trades(b);
996   return ak - bk
997 }
998
999 function ts_10c1_trades(a,b) { return -ts_10c0_trades(a,b); }
1000
1001
1002 function ts_11m_trades(re) {
1003   var rowid = re.id;
1004   return ts_sortkeys[11][rowid];
1005 }
1006
1007 function ts_11c0_trades(a,b) {
1008   var ak = ts_11m_trades(a);
1009   var bk = ts_11m_trades(b);
1010   return ak - bk
1011 }
1012
1013 function ts_11c1_trades(a,b) { return -ts_11c0_trades(a,b); }
1014
1015
1016 function ts_12m_trades(re) {
1017   var rowid = re.id;
1018   return ts_sortkeys[12][rowid];
1019 }
1020
1021 function ts_12c0_trades(a,b) {
1022   var ak = ts_12m_trades(a);
1023   var bk = ts_12m_trades(b);
1024   return ak - bk
1025 }
1026
1027 function ts_12c1_trades(a,b) { return -ts_12c0_trades(a,b); }
1028
1029
1030 function ts_13m_trades(re) {
1031   var rowid = re.id;
1032   return ts_sortkeys[13][rowid];
1033 }
1034
1035 function ts_13c0_trades(a,b) {
1036   var ak = ts_13m_trades(a);
1037   var bk = ts_13m_trades(b);
1038   return ak - bk
1039 }
1040
1041 function ts_13c1_trades(a,b) { return -ts_13c0_trades(a,b); }
1042
1043
1044 function ts_14m_trades(re) {
1045   var rowid = re.id;
1046   return ts_sortkeys[14][rowid];
1047 }
1048
1049 function ts_14c0_trades(a,b) {
1050   var ak = ts_14m_trades(a);
1051   var bk = ts_14m_trades(b);
1052   return ak - bk
1053 }
1054
1055 function ts_14c1_trades(a,b) { return -ts_14c0_trades(a,b); }
1056
1057
1058 function ts_15m_trades(re) {
1059   var rowid = re.id;
1060   return ts_sortkeys[15][rowid];
1061 }
1062
1063 function ts_15c0_trades(a,b) {
1064   var ak = ts_15m_trades(a);
1065   var bk = ts_15m_trades(b);
1066   return ak - bk
1067 }
1068
1069 function ts_15c1_trades(a,b) { return -ts_15c0_trades(a,b); }
1070
1071
1072 function ts_16m_trades(re) {
1073   var rowid = re.id;
1074   return ts_sortkeys[16][rowid];
1075 }
1076
1077 function ts_16c0_trades(a,b) {
1078   var ak = ts_16m_trades(a);
1079   var bk = ts_16m_trades(b);
1080   return ak - bk
1081 }
1082
1083 function ts_16c1_trades(a,b) { return -ts_16c0_trades(a,b); }
1084
1085
1086 function ts_17m_trades(re) {
1087   var rowid = re.id;
1088   return ts_sortkeys[17][rowid];
1089 }
1090
1091 function ts_17c0_trades(a,b) {
1092   var ak = ts_17m_trades(a);
1093   var bk = ts_17m_trades(b);
1094   return ak - bk
1095 }
1096
1097 function ts_17c1_trades(a,b) { return -ts_17c0_trades(a,b); }
1098
1099
1100 function ts_18m_trades(re) {
1101   var rowid = re.id;
1102   return ts_sortkeys[18][rowid];
1103 }
1104
1105 function ts_18c0_trades(a,b) {
1106   var ak = ts_18m_trades(a);
1107   var bk = ts_18m_trades(b);
1108   return ak - bk
1109 }
1110
1111 function ts_18c1_trades(a,b) { return -ts_18c0_trades(a,b); }
1112
1113
1114 function ts_onload__trades() {
1115   var ts_add_heads= {"11":"<a href=\"javascript:ts_s_trades(ts_11c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_11c0_trades)\">&and;<\/a>","7":"<a href=\"javascript:ts_s_trades(ts_7c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_7c0_trades)\">&and;<\/a>","17":"<a href=\"javascript:ts_s_trades(ts_17c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_17c0_trades)\">&and;<\/a>","2":"<a href=\"javascript:ts_s_trades(ts_2c0_trades)\">&and;<\/a>","1":"<a href=\"javascript:ts_s_trades(ts_1c0_trades)\">&and;<\/a>","18":"<a href=\"javascript:ts_s_trades(ts_18c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_18c0_trades)\">&and;<\/a>","16":"<a href=\"javascript:ts_s_trades(ts_16c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_16c0_trades)\">&and;<\/a>","13":"<a href=\"javascript:ts_s_trades(ts_13c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_13c0_trades)\">&and;<\/a>","6":"<a href=\"javascript:ts_s_trades(ts_6c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_6c0_trades)\">&and;<\/a>","3":"<a href=\"javascript:ts_s_trades(ts_3c0_trades)\">&and;<\/a>","9":"<a href=\"javascript:ts_s_trades(ts_9c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_9c0_trades)\">&and;<\/a>","12":"<a href=\"javascript:ts_s_trades(ts_12c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_12c0_trades)\">&and;<\/a>","14":"<a href=\"javascript:ts_s_trades(ts_14c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_14c0_trades)\">&and;<\/a>","15":"<a href=\"javascript:ts_s_trades(ts_15c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_15c0_trades)\">&and;<\/a>","8":"<a href=\"javascript:ts_s_trades(ts_8c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_8c0_trades)\">&and;<\/a>","4":"<a href=\"javascript:ts_s_trades(ts_4c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_4c0_trades)\">&and;<\/a>","10":"<a href=\"javascript:ts_s_trades(ts_10c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_10c0_trades)\">&and;<\/a>","5":"<a href=\"javascript:ts_s_trades(ts_5c1_trades)\">&or;<\/a><a href=\"javascript:ts_s_trades(ts_5c0_trades)\">&and;<\/a>"};
1116   var ctr= document.getElementById('trades_sort');
1117   var firstth= ctr.getElementsByTagName('th').item(0);
1118   var thlist= firstth.parentNode.getElementsByTagName('th');
1119   debug('thlist='+thlist);
1120   debug('thlist.item(2)=' + thlist.item(2));
1121   for (var cix in ts_add_heads) {
1122     var ah = ts_add_heads[cix];
1123     debug('appending to cix='+cix+' ah='+ah);
1124     thlist.item(cix).innerHTML += ah;
1125   }
1126 }
1127
1128 register_onload(ts_onload__trades);
1129
1130 // -->
1131 </script>
1132
1133
1134
1135 <input type=submit name=update value="Update">
1136
1137 <h1>Voyage trading plan</h1>
1138 <table rules=groups>
1139 <tbody>
1140 <tr><td colspan=4>
1141 <strong>Start at Eta Island</strong>
1142 <td colspan=2>(Data age: <span id="da_0">2 days</span>)
1143 <tr class="datarow0">
1144 <td rowspan=2>Collect
1145 <td rowspan=2>Wood
1146 <td>Finagle&#39;s Distilling Stall
1147 <td rowspan=2 align=right>22 poe ea.
1148 <td rowspan=2 align=right>276 unit(s)
1149 <td rowspan=2 align=right>6072 total
1150 <tr class="datarow0">
1151 <td>Samjones&#39;s Ironworking Stall
1152 <tr class="datarow1">
1153 <td rowspan=3>Collect
1154 <td rowspan=3>Wood
1155 <td>Acute Irony
1156 <td rowspan=3 align=right>23 poe ea.
1157 <td rowspan=3 align=right>647 unit(s)
1158 <td rowspan=3 align=right>14881 total
1159 <tr class="datarow1">
1160 <td>Fumundacheez&#39;s Ironworking Stall
1161 <tr class="datarow1">
1162 <td>Tesla Foils
1163 <tr>
1164 <td colspan=1>
1165 <td colspan=2>In hold 161525kg, 230750 l.
1166
1167 <td colspan=2 align=right>Outlay
1168 <td align=right>20953 total
1169 <tbody>
1170 <tr><td colspan=4>
1171 <strong>Sail to Jorvik Island</strong>
1172 - 5 leagues,
1173  22991poe at risk
1174  </td>
1175 <td colspan=2>(Data age: <span id="da_1">2 days</span>)
1176 <tr class="datarow0">
1177 <td rowspan=4>Deliver
1178 <td rowspan=4>Wood
1179 <td>Biker&#39;s Distilling Stall
1180 <td rowspan=4 align=right>25 poe ea.
1181 <td rowspan=4 align=right>839 unit(s)
1182 <td rowspan=4 align=right>20975 total
1183 <tr class="datarow0">
1184 <td>Canterbury Ales
1185 <tr class="datarow0">
1186 <td>Darkseid&#39;s Ironworking Stall
1187 <tr class="datarow0">
1188 <td>Spearhalk&#39;s Distilling Stall
1189 <tr class="datarow1">
1190 <td rowspan=2>Deliver
1191 <td rowspan=2>Wood
1192 <td>Affjordable Furnishing
1193 <td rowspan=2 align=right>24 poe ea.
1194 <td rowspan=2 align=right>84 unit(s)
1195 <td rowspan=2 align=right>2016 total
1196 <tr class="datarow1">
1197 <td>Helsingkor
1198 <tr>
1199 <td colspan=1>
1200 <td colspan=2>
1201 <td colspan=2 align=right>Proceeds
1202 <td align=right>22991 total
1203 <tbody>
1204 <tr class="datarow0">
1205 <td rowspan=1>Collect
1206 <td rowspan=1>Iron
1207 <td>Helsingkor
1208 <td rowspan=1 align=right>14 poe ea.
1209 <td rowspan=1 align=right>21 unit(s)
1210 <td rowspan=1 align=right>294 total
1211 <tr class="datarow1">
1212 <td rowspan=1>Collect
1213 <td rowspan=1>Rambutan
1214 <td>Yggdrasil
1215 <td rowspan=1 align=right>51 poe ea.
1216 <td rowspan=1 align=right>2 unit(s)
1217 <td rowspan=1 align=right>102 total
1218 <tr>
1219 <td colspan=1>
1220 <td colspan=2>
1221 <td colspan=2 align=right>(Arbitrage) outlay
1222 <td align=right>396 total
1223 <tbody>
1224 <tr class="datarow0">
1225 <td rowspan=1>Deliver
1226 <td rowspan=1>Iron
1227 <td>Jergs&#39;s Ironworking Stall
1228 <td rowspan=1 align=right>15 poe ea.
1229 <td rowspan=1 align=right>21 unit(s)
1230 <td rowspan=1 align=right>315 total
1231 <tr class="datarow1">
1232 <td rowspan=1>Deliver
1233 <td rowspan=1>Rambutan
1234 <td>Merchant of Vanir
1235 <td rowspan=1 align=right>59 poe ea.
1236 <td rowspan=1 align=right>2 unit(s)
1237 <td rowspan=1 align=right>118 total
1238 <tr>
1239 <td colspan=1>
1240 <td colspan=2>
1241 <td colspan=2 align=right>(Arbitrage) proceeds
1242 <td align=right>433 total
1243 <tbody><tr>
1244 <td colspan=2>Total distance: 5 leagues.
1245 <td colspan=3 align=right>Overall net cash flow
1246 <td align=right><strong>2075 gain</strong>
1247 </table>
1248
1249 <script type="text/javascript">
1250 <!--
1251
1252   function da_Refresh() {
1253     var now= Date.now();
1254     debug('updating now='+now);
1255     for (var ageid in da_ages) {
1256       var oldage= da_ages[ageid];
1257       var el= document.getElementById(ageid);
1258       var age= oldage + (now - da_pageload) / 1000;
1259       var newhtml=         age < 60 ?             'less than a minute'                    :
1260         age < 60*2 ?           '1 minute'                              :
1261         age < 3600*2 ?         Math.floor (age/60) +' minutes'        :
1262         age < 86400*2 ?        Math.floor (age/3600) + ' hours'       :
1263                                 Math.floor (age/86400) + ' days';
1264 ;
1265       el.innerHTML= newhtml;
1266     }
1267   }
1268   da_ages= {"da_1":174403,"da_0":174443};
1269   window.setInterval(da_Refresh, 10000);
1270   register_onload(da_Refresh);
1271
1272 // -->
1273 </script>
1274
1275
1276
1277
1278 </form>
1279
1280
1281 <p>
1282
1283
1284
1285 <script type="text/javascript">
1286 <!--
1287
1288 function debug (m) {
1289 }
1290
1291 // -->
1292 </script>
1293
1294
1295 <hr>
1296 <address>
1297 YARRG is Yet Another Revenue Research Gatherer, a project of the
1298 crew Special Circumstances on the Midnight Ocean
1299 and of the Sinister Greenend Organisation.
1300 <p>
1301
1302 YARRG is Free Software.
1303 You may share and modify the code and the
1304 website, according to the terms of the GNU General Public Licence and
1305 the GNU Affero General Public Licence respectively (v3 or later).
1306 Note that there is <strong>NO WARRANTY</strong>.
1307 Please see the <a href="devel">YARRG Development webpage</a> for
1308 details of how to obtain the client and server code and full details
1309 of the licences.
1310
1311 <p>
1312 YARRG is Copyright 2009 Ian Jackson, Clare Boothby, Steve Early.
1313 Yohoho and Puzzle Pirates are trademarks of Three Rings and are used
1314 without permission.  YARRG is not endorsed or sponsored by Three
1315 Rings.
1316
1317 </address>
1318
1319
1320