1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
3 This HTML is generated by the YARRG website, which is
4 Copyright 2009 Ian Jackson, Clare Boothby, Steve Early.
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
11 Many YARRG web pages also display data from the YARRG database,
12 which contains mostly contributions from YARRG users and is not
19 <html lang="en"><head><title>Trades for route - YARRG</title>
20 <style type="text/css">
25 tr.datarow0 { background: #e3e3e3; }
26 tr.datarow1 { background: #ffffff; }
28 <script type="text/javascript">
31 function register_onload(f) {
32 var previous_onload= window.onload;
33 window.onload= function() {
34 if (previous_onload) previous_onload();
44 <a href="lookup">YARRG</a> -
45 Yet Another Revenue Research Gatherer
47 <a href="intro">introduction</a>
49 <a href="docs">documentation</a>
51 <a href="devel">development</a>
53 Ocean: <b>Midnight</b>
55 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&capacitystring=&ocean=Cobalt">
58 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&capacitystring=&ocean=Ice">
61 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&capacitystring=&ocean=Hunter">
64 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&capacitystring=&ocean=Malachite">
67 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&capacitystring=&ocean=Sage">
70 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&capacitystring=&ocean=Viridian">
73 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&capacitystring=&ocean=Crimson">
76 Interface: <b>Type in names</b>
78 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&dropdowns=4&capitalstring=&capacitystring=">
79 Select from menus</a><p>
81 Query: <b>Trades for route</b>
83 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&query=commod&capacitystring=">
84 Prices for commodity</a>
86 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&query=offers&capacitystring=">
87 Offers at location</a>
89 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&query=age&capacitystring=">
97 <h1>Specify route</h1>
99 <form action="lookup" method="post">
101 <b>Show total quantity at each price</b>
103 <a href="lookup?lossperleague=&routestring=eta%2C+jorvik&capitalstring=&capacitystring=&showstalls=1">
104 Show individual stalls</a><p>
109 Enter route (islands, or archipelagoes, separated by |s or commas;
110 abbreviations are OK):<br>
113 <script type="text/javascript">
116 rl_uri= "qtextstringcheck?format=application/json&ctype=text/xml"
117 + "&what=routestring"
125 window.clearTimeout(rl_timeout);
126 rl_timeout = window.setTimeout(rl_Needed, 500);
128 function rl_Needed(){
129 window.clearTimeout(rl_timeout);
130 rl_element= document.getElementById('routestring');
131 rl_needed= rl_element.value;
134 function rl_Request(){
135 if (rl_request || rl_needed==rl_done) return;
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);
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;
155 register_onload(rl_Needed);
164 id="routestring" name="routestring"
165 onchange="rl_Needed();" onkeyup="rl_Later();"
169 <div id="rl_results"> </div><br>
178 <strong>Advanced options - you may leave these blank:</strong>
184 <script type="text/javascript">
187 cs_uri= "qtextstringcheck?format=application/json&ctype=text/xml"
188 + "&what=capacitystring"
196 window.clearTimeout(cs_timeout);
197 cs_timeout = window.setTimeout(cs_Needed, 500);
199 function cs_Needed(){
200 window.clearTimeout(cs_timeout);
201 cs_element= document.getElementById('capacitystring');
202 cs_needed= cs_element.value;
205 function cs_Request(){
206 if (cs_request || cs_needed==cs_done) return;
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);
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;
226 register_onload(cs_Needed);
235 id="capacitystring" name="capacitystring"
236 onchange="cs_Needed();" onkeyup="cs_Later();"
238 ><a href="docs#capacity">[?]</a>
240 <div id="cs_results"> </div><br>
255 <script type="text/javascript">
258 ll_uri= "qtextstringcheck?format=application/json&ctype=text/xml"
259 + "&what=lossperleague"
267 window.clearTimeout(ll_timeout);
268 ll_timeout = window.setTimeout(ll_Needed, 500);
270 function ll_Needed(){
271 window.clearTimeout(ll_timeout);
272 ll_element= document.getElementById('lossperleague');
273 ll_needed= ll_element.value;
276 function ll_Request(){
277 if (ll_request || ll_needed==ll_done) return;
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);
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;
297 register_onload(ll_Needed);
306 id="lossperleague" name="lossperleague"
307 onchange="ll_Needed();" onkeyup="ll_Later();"
309 ><a href="docs#losses">[?]</a>
311 <div id="ll_results"> </div><br>
321 <td>Available capital:
324 <script type="text/javascript">
327 ac_uri= "qtextstringcheck?format=application/json&ctype=text/xml"
328 + "&what=capitalstring"
336 window.clearTimeout(ac_timeout);
337 ac_timeout = window.setTimeout(ac_Needed, 500);
339 function ac_Needed(){
340 window.clearTimeout(ac_timeout);
341 ac_element= document.getElementById('capitalstring');
342 ac_needed= ac_element.value;
345 function ac_Request(){
346 if (ac_request || ac_needed==ac_done) return;
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);
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;
366 register_onload(ac_Needed);
375 id="capitalstring" name="capitalstring"
376 onchange="ac_Needed();" onkeyup="ac_Later();"
378 ><a href="docs#capital">[?]</a>
380 <div id="ac_results"> </div><br>
390 <input type=submit name=submit value="Update">
396 <h1>Relevant trades</h1>
397 <script type="text/javascript">
400 da_pageload= Date.now();
516 <table id="trades" rules=groups>
532 <th colspan=2>Collect
533 <th colspan=2>Deliver
538 <th colspan=3>Planned
561 <tr id="trades_sort">
582 <tr id="id_row_XcIbTKbU" class="datarow0">
583 <td><input type=hidden name=RXcIbTKbU value="">
584 <input type=checkbox name=TXcIbTKbU value=""
586 <td colspan=1 >Eta Island
587 <td colspan=1 >Jorvik Island
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=""
608 <td colspan=1 >Eta Island
609 <td colspan=1 >Jorvik Island
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=""
630 <td colspan=1 >Eta Island
631 <td colspan=1 >Jorvik Island
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=""
652 <td colspan=1 >Eta Island
653 <td colspan=1 >Jorvik Island
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=""
674 <td colspan=1 >Eta Island
675 <td colspan=1 >Jorvik Island
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=""
696 <td colspan=1 >Eta Island
697 <td colspan=1 >Jorvik Island
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=""
718 <td colspan=1 >Eta Island
719 <td colspan=1 >Jorvik Island
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=""
740 <td colspan=1 >Jorvik Island
741 <td colspan=1 >Jorvik Island
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=""
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">
808 <script type="text/javascript">
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}};
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;
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);
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+' ]]');
838 debug('process row '+rowix+' [[ '+row+' ]] id='+row.id);
841 for (; rowix < rows.length; rowix++) {
842 var row= rows.item(rowix);
844 debug('final row '+rowix+' [[ '+row+' ]]');
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;
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);
862 function ts_1m_trades(re) {
864 return ts_sortkeys[1][rowid];
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;
876 function ts_2m_trades(re) {
878 return ts_sortkeys[2][rowid];
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;
890 function ts_3m_trades(re) {
892 return ts_sortkeys[3][rowid];
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;
904 function ts_4m_trades(re) {
906 return ts_sortkeys[4][rowid];
909 function ts_4c0_trades(a,b) {
910 var ak = ts_4m_trades(a);
911 var bk = ts_4m_trades(b);
915 function ts_4c1_trades(a,b) { return -ts_4c0_trades(a,b); }
918 function ts_5m_trades(re) {
920 return ts_sortkeys[5][rowid];
923 function ts_5c0_trades(a,b) {
924 var ak = ts_5m_trades(a);
925 var bk = ts_5m_trades(b);
929 function ts_5c1_trades(a,b) { return -ts_5c0_trades(a,b); }
932 function ts_6m_trades(re) {
934 return ts_sortkeys[6][rowid];
937 function ts_6c0_trades(a,b) {
938 var ak = ts_6m_trades(a);
939 var bk = ts_6m_trades(b);
943 function ts_6c1_trades(a,b) { return -ts_6c0_trades(a,b); }
946 function ts_7m_trades(re) {
948 return ts_sortkeys[7][rowid];
951 function ts_7c0_trades(a,b) {
952 var ak = ts_7m_trades(a);
953 var bk = ts_7m_trades(b);
957 function ts_7c1_trades(a,b) { return -ts_7c0_trades(a,b); }
960 function ts_8m_trades(re) {
962 return ts_sortkeys[8][rowid];
965 function ts_8c0_trades(a,b) {
966 var ak = ts_8m_trades(a);
967 var bk = ts_8m_trades(b);
971 function ts_8c1_trades(a,b) { return -ts_8c0_trades(a,b); }
974 function ts_9m_trades(re) {
976 return ts_sortkeys[9][rowid];
979 function ts_9c0_trades(a,b) {
980 var ak = ts_9m_trades(a);
981 var bk = ts_9m_trades(b);
985 function ts_9c1_trades(a,b) { return -ts_9c0_trades(a,b); }
988 function ts_10m_trades(re) {
990 return ts_sortkeys[10][rowid];
993 function ts_10c0_trades(a,b) {
994 var ak = ts_10m_trades(a);
995 var bk = ts_10m_trades(b);
999 function ts_10c1_trades(a,b) { return -ts_10c0_trades(a,b); }
1002 function ts_11m_trades(re) {
1004 return ts_sortkeys[11][rowid];
1007 function ts_11c0_trades(a,b) {
1008 var ak = ts_11m_trades(a);
1009 var bk = ts_11m_trades(b);
1013 function ts_11c1_trades(a,b) { return -ts_11c0_trades(a,b); }
1016 function ts_12m_trades(re) {
1018 return ts_sortkeys[12][rowid];
1021 function ts_12c0_trades(a,b) {
1022 var ak = ts_12m_trades(a);
1023 var bk = ts_12m_trades(b);
1027 function ts_12c1_trades(a,b) { return -ts_12c0_trades(a,b); }
1030 function ts_13m_trades(re) {
1032 return ts_sortkeys[13][rowid];
1035 function ts_13c0_trades(a,b) {
1036 var ak = ts_13m_trades(a);
1037 var bk = ts_13m_trades(b);
1041 function ts_13c1_trades(a,b) { return -ts_13c0_trades(a,b); }
1044 function ts_14m_trades(re) {
1046 return ts_sortkeys[14][rowid];
1049 function ts_14c0_trades(a,b) {
1050 var ak = ts_14m_trades(a);
1051 var bk = ts_14m_trades(b);
1055 function ts_14c1_trades(a,b) { return -ts_14c0_trades(a,b); }
1058 function ts_15m_trades(re) {
1060 return ts_sortkeys[15][rowid];
1063 function ts_15c0_trades(a,b) {
1064 var ak = ts_15m_trades(a);
1065 var bk = ts_15m_trades(b);
1069 function ts_15c1_trades(a,b) { return -ts_15c0_trades(a,b); }
1072 function ts_16m_trades(re) {
1074 return ts_sortkeys[16][rowid];
1077 function ts_16c0_trades(a,b) {
1078 var ak = ts_16m_trades(a);
1079 var bk = ts_16m_trades(b);
1083 function ts_16c1_trades(a,b) { return -ts_16c0_trades(a,b); }
1086 function ts_17m_trades(re) {
1088 return ts_sortkeys[17][rowid];
1091 function ts_17c0_trades(a,b) {
1092 var ak = ts_17m_trades(a);
1093 var bk = ts_17m_trades(b);
1097 function ts_17c1_trades(a,b) { return -ts_17c0_trades(a,b); }
1100 function ts_18m_trades(re) {
1102 return ts_sortkeys[18][rowid];
1105 function ts_18c0_trades(a,b) {
1106 var ak = ts_18m_trades(a);
1107 var bk = ts_18m_trades(b);
1111 function ts_18c1_trades(a,b) { return -ts_18c0_trades(a,b); }
1114 function ts_onload__trades() {
1115 var ts_add_heads= {"11":"<a href=\"javascript:ts_s_trades(ts_11c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_11c0_trades)\">∧<\/a>","7":"<a href=\"javascript:ts_s_trades(ts_7c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_7c0_trades)\">∧<\/a>","17":"<a href=\"javascript:ts_s_trades(ts_17c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_17c0_trades)\">∧<\/a>","2":"<a href=\"javascript:ts_s_trades(ts_2c0_trades)\">∧<\/a>","1":"<a href=\"javascript:ts_s_trades(ts_1c0_trades)\">∧<\/a>","18":"<a href=\"javascript:ts_s_trades(ts_18c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_18c0_trades)\">∧<\/a>","16":"<a href=\"javascript:ts_s_trades(ts_16c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_16c0_trades)\">∧<\/a>","13":"<a href=\"javascript:ts_s_trades(ts_13c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_13c0_trades)\">∧<\/a>","6":"<a href=\"javascript:ts_s_trades(ts_6c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_6c0_trades)\">∧<\/a>","3":"<a href=\"javascript:ts_s_trades(ts_3c0_trades)\">∧<\/a>","9":"<a href=\"javascript:ts_s_trades(ts_9c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_9c0_trades)\">∧<\/a>","12":"<a href=\"javascript:ts_s_trades(ts_12c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_12c0_trades)\">∧<\/a>","14":"<a href=\"javascript:ts_s_trades(ts_14c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_14c0_trades)\">∧<\/a>","15":"<a href=\"javascript:ts_s_trades(ts_15c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_15c0_trades)\">∧<\/a>","8":"<a href=\"javascript:ts_s_trades(ts_8c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_8c0_trades)\">∧<\/a>","4":"<a href=\"javascript:ts_s_trades(ts_4c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_4c0_trades)\">∧<\/a>","10":"<a href=\"javascript:ts_s_trades(ts_10c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_10c0_trades)\">∧<\/a>","5":"<a href=\"javascript:ts_s_trades(ts_5c1_trades)\">∨<\/a><a href=\"javascript:ts_s_trades(ts_5c0_trades)\">∧<\/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;
1128 register_onload(ts_onload__trades);
1135 <input type=submit name=update value="Update">
1137 <h1>Voyage trading plan</h1>
1138 <table rules=groups>
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
1146 <td>Finagle'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's Ironworking Stall
1152 <tr class="datarow1">
1153 <td rowspan=3>Collect
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's Ironworking Stall
1161 <tr class="datarow1">
1165 <td colspan=2>In hold 161525kg, 230750 l.
1167 <td colspan=2 align=right>Outlay
1168 <td align=right>20953 total
1171 <strong>Sail to Jorvik Island</strong>
1175 <td colspan=2>(Data age: <span id="da_1">2 days</span>)
1176 <tr class="datarow0">
1177 <td rowspan=4>Deliver
1179 <td>Biker'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">
1185 <tr class="datarow0">
1186 <td>Darkseid's Ironworking Stall
1187 <tr class="datarow0">
1188 <td>Spearhalk's Distilling Stall
1189 <tr class="datarow1">
1190 <td rowspan=2>Deliver
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">
1201 <td colspan=2 align=right>Proceeds
1202 <td align=right>22991 total
1204 <tr class="datarow0">
1205 <td rowspan=1>Collect
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
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
1221 <td colspan=2 align=right>(Arbitrage) outlay
1222 <td align=right>396 total
1224 <tr class="datarow0">
1225 <td rowspan=1>Deliver
1227 <td>Jergs'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
1241 <td colspan=2 align=right>(Arbitrage) proceeds
1242 <td align=right>433 total
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>
1249 <script type="text/javascript">
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';
1265 el.innerHTML= newhtml;
1268 da_ages= {"da_1":174403,"da_0":174443};
1269 window.setInterval(da_Refresh, 10000);
1270 register_onload(da_Refresh);
1285 <script type="text/javascript">
1288 function debug (m) {
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.
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
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