Advertisement
Dzejkobini

esim.jobmarket.salaries

Jan 8th, 2016
396
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name JobMarketExtension
  3. // @description Shows salary without income tax
  4. // @namespace Violentmonkey Scripts
  5. // @grant none+
  6. // @include *.e-sim.org/jobMarket.html*
  7. // ==/UserScript==
  8.  
  9. /**
  10.  * Main
  11.  *
  12.  */
  13. $(document).ready(function() {
  14.     var aObj = getTaxes();
  15.     var aMMObj = getMMcontent();
  16.     var fGoldRatio = getGoldRatio(aMMObj);
  17.     modifyTable(aObj, fGoldRatio);
  18. });
  19.  
  20. /**
  21.  * Get localisation with bonus.
  22.  * @Return {Object} JSON object of localisation with bonus.
  23.  *
  24.  */
  25. function getTaxes() {
  26.     var nCountryId = parseInt($('#countryId option:selected').val());
  27.     var sHtml;
  28.     var aResult = {};
  29.     var aResourcesNames = ['Iron', 'Grain', 'Oil', 'Stone', 'Wood', 'Diamonds', 'Weapon', 'House', 'Gift', 'Food', 'Ticket', 'Defense System', 'Hospital', 'Estate'];
  30.  
  31.     $.ajax({
  32.         type: "GET",
  33.         dataType: "html",
  34.         async: false,
  35.         url: "/countryEconomyStatistics.html?countryId=" + nCountryId,
  36.         success: function(html) {
  37.             sHtml = html;
  38.         }
  39.     });
  40.  
  41.     var aRows = $('[class*="dataTable"][style="margin: auto;width: 600px;"] tr', sHtml);
  42.     aRows = aRows.slice(1, aRows.length)
  43.  
  44.     for (i = 0; i < aRows.length; i++) {
  45.         var aCell = $("td", aRows[i]);
  46.         var sResource = aCell[0].innerHTML.trim();
  47.         var nVat = parseInt(aCell[1].innerHTML.trim().replace('%', ''));
  48.         var nImportTax = parseInt(aCell[2].innerHTML.replace(/%|&nbsp;/g, '').trim());
  49.         var nIncomeTax = parseInt(aCell[3].innerHTML.trim().replace('%', ''));
  50.  
  51.         aResult[aResourcesNames[i]] = {};
  52.         aResult[aResourcesNames[i]]['nVat'] = nVat;
  53.         aResult[aResourcesNames[i]]['nImportTax'] = nImportTax;
  54.         aResult[aResourcesNames[i]]['nIncomeTax'] = nIncomeTax;
  55.         aResult[aResourcesNames[i]]['sResource'] = aResourcesNames[i];
  56.  
  57.     }
  58.     return aResult;
  59. }
  60.  
  61. /**
  62.  * Modify job market table
  63.  * @Param {Object} JSON Object aObj of taxes.
  64.  * @Param
  65.  */
  66. function modifyTable(aObj, fGoldRatio) {
  67.     var aRows = $('[class="dataTable"] tr');
  68.     aRows = aRows.slice(1, aRows.length)
  69.     for (i = 0; i < aRows.length; i++) {
  70.         var aCell = $("td", aRows[i]);
  71.         var sResource = $('img', aCell[2])[0].src;
  72.         sResource = sResource.substring(sResource.lastIndexOf('/') + 1, sResource.lastIndexOf('.'));
  73.         sResource = sResource.replace('%20', ' ');
  74.         var nSalary = parseFloat($('b', aCell[4]).html());
  75.         var fSalaryWoTax = Math.round((nSalary * (1 - (aObj[sResource].nIncomeTax) / 100)) * 100) / 100;
  76.         var sCountry = $('[class*="flags-small"]', aCell[4])[0].className.split(' ')[1];
  77.         var aCellClone = $(aCell[4]).clone();
  78.         $('div', aCellClone).remove();
  79.         $('b', aCellClone).remove();
  80.         var sCurrency = aCellClone[0].innerHTML.trim();
  81.         var fInGold = Math.round(fGoldRatio * fSalaryWoTax * 100) / 100;
  82.  
  83.         $(aCell[2]).append('<b>Income tax:</b></br>' + aObj[sResource].nIncomeTax + '%');
  84.         $(aCell[4]).append('<br/><br/><b>After tax:</b></br><div class="flags-small ' + sCountry + '"></div> <b title="' + fSalaryWoTax + '">' + fSalaryWoTax + '</b> ' + sCurrency + '<br/><b>' + fInGold + '</b> <div class="flags-small Gold"></div>');
  85.     }
  86.  
  87. }
  88.  
  89. /**
  90.  * @Return {Object} JSON Object of monetary market content.
  91.  *
  92.  */
  93. function getMMcontent() {
  94.  
  95.     var sHtml;
  96.  
  97.     var nCountryId = parseInt($('#countryId').find(":selected").attr('value'));
  98.  
  99.     $.ajax({
  100.         type: "GET",
  101.         dataType: "html",
  102.         async: false,
  103.         url: "/monetaryMarket.html?buyerCurrencyId=" + nCountryId + "&sellerCurrencyId=0",
  104.         success: function(html) {
  105.             sHtml = html;
  106.         }
  107.     });
  108.  
  109.     var aHtmlDOM = $.parseHTML(sHtml);
  110.     var aMMtab = $("[class='dataTable']", aHtmlDOM)[0];
  111.     var aRows = $("tr", aMMtab);
  112.     aRows = aRows.slice(1, aRows.length);
  113.     var aResult = [];
  114.    
  115.     for (i = 0; i < aRows.length; i++) {
  116.         aResult[i] = {};
  117.         var aCell = $("td", aRows[i]);
  118.  
  119.         var aSeller = $("[class='profileLink'], a[href*='stockCompany']", aCell[0]);
  120.         var bIsStock = false;
  121.  
  122.         if ($("[class='profileLink']", aCell[0]).length) {
  123.             var nSellerId = parseInt(aSeller.attr('href').match(/profile\.html\?id=([0-9]*)/)[1]);
  124.         } else if ($("a[href*='stockCompany']", aCell[0]).length) {
  125.             var bIsStock = true;
  126.             var nSellerId = parseInt(aSeller.attr('href').match(/stockCompany\.html\?id=([0-9]*)/)[1]);
  127.         }
  128.  
  129.         var fCurrencyAmount = parseFloat($("b", aCell[1]).attr('title'));
  130.         var fCurrencyPrice = parseFloat($("b", aCell[2]).html());
  131.         var nOfferId = parseInt($("[name='id']", aCell[3]).attr('value'));
  132.  
  133.         aResult[i]['nSellerId'] = nSellerId;
  134.         aResult[i]['fCurrencyAmount'] = fCurrencyAmount;
  135.         aResult[i]['fCurrencyPrice'] = fCurrencyPrice;
  136.         aResult[i]['nOfferId'] = nOfferId;
  137.         aResult[i]['bIsStock'] = bIsStock;
  138.     }
  139.  
  140.     return aResult;
  141. }
  142.  
  143. /**
  144.  * @Param {Object} aObjMM JSON Object of MM content.
  145.  * @Return {Number} gold ratio.
  146.  *
  147.  */
  148. function getGoldRatio(aMMObj) {
  149.     if (aMMObj.length) {
  150.         for (i = 0; i < aMMObj.length; i++) {
  151.             if (aMMObj[i].fCurrencyAmount > 100) {
  152.                 return aMMObj[i].fCurrencyPrice;
  153.             }
  154.         }
  155.     }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement