Popup.js

De la Wiki The-West RO
Jump to navigation

westui = {

 lang: {
   input_level: "Nivelul tău",
   input_search: "Caută",
   damages: "Daună",
   per_level: "per nivel",
   speed: "Viteză",
   level: "Nivel",
   unsalable: "Nevandabil",
   auction: "Licitabil",
   not_auction: "Nevandabil",
   not_upgrade: "Nu poate fi upgradat",
   upgrade: "Upgradabil",
   total: "Total",
   popup: {
     dmg: {

dmglvl: '

'

     },
     skills: {

str: '

', mob: '

', dex: '

', cha: '

', con: '

', vig: '

', tou: '

', sta: '

', hea: '

', rid: '

', ref: '

', dod: '

', hid: '

', swi: '

', aim: '

', sho: '

', pit: '

', fin: '

', rep: '

', lea: '

', tac: '

', tra: '

', ani: '

', app: '

'

     },
     fb: {

fbdef: '

', fboff: '

', fbres: '

', fbdefs: '

', fboffs: '

', fbdmgs: '

'

     },
     special: {

xp: '

', money: '

', luck: '

', regen: '

', drop: '

', labor_pts: '

', spd: '

'

     }
   }
 },
 config: {
   enable_set_calc: true,
   plain_popup: true,
   redirect_on_dblclick: false,
   link_on_dblclick: true,
   enable_sorting: true,
   cdn: "https://westzz.innogamescdn.com",
   img_buyprice: "/images/5/57/Buy_price.png",
   img_sellprice: "/images/f/fc/Sell_price.png",
   img_male: "/images/c/c5/Gender_m.png",
   img_female: "/images/4/41/Gender_f.png",
   set_bonus: {
     str: {
       name: "Putere",
       img: "/images/thumb/8/8b/Strength.png/40px-Strength.png"
     },
     mob: {
       name: "Mobilitate",
       img: "/images/thumb/5/5a/Mobility.png/40px-Mobility.png"
     },
     dex: {
       name: "Dexteritate",
       img: "/images/thumb/0/0d/Dexterity.png/40px-Dexterity.png"
     },
     cha: {
       name: "Carismă",
       img: "/images/thumb/c/c9/Charisma.png/40px-Charisma.png"
     },
     con: {
       name: "Construcție",
       img: "/images/thumb/3/37/Construction.png/40px-Construction.png"
     },
     vig: {
       name: "Vigoare",
       img: "/images/thumb/9/90/Skill_Punch.png/40px-Skill_Punch.png"
     },
     tou: {
       name: "Rezistenţă",
       img: "/images/thumb/f/f8/Skill_Tough.png/40px-Skill_Tough.png"
     },
     sta: {
       name: "Perseverență",
       img: "/images/thumb/8/8d/Stamina.png/40px-Stamina.png"
     },
     hea: {
       name: "Puncte de viață",
       img: "/images/thumb/9/94/Health.png/40px-Health.png"
     },
     rid: {
       name: "Călărie",
       img: "/images/thumb/7/78/Hbr.png/40px-Hbr.png"
     },
     ref: {
       name: "Reflex",
       img: "/images/thumb/e/e9/Skill_Reflex.png/40px-Skill_Reflex.png"
     },
     dod: {
       name: "Ferire",
       img: "/images/thumb/0/07/Skill_Dodge.png/40px-Skill_Dodge.png"
     },
     hid: {
       name: "Ascundere",
       img: "/images/thumb/9/97/Hiding.png/40px-Hiding.png"
     },
     swi: {
       name: "Înot",
       img: "/images/thumb/f/f4/Swimming.png/40px-Swimming.png"
     },
     aim: {
       name: "Țintire",
       img: "/images/thumb/5/53/Skill_Aim.png/40px-Skill_Aim.png"
     },
     sho: {
       name: "Împușcare",
       img: "/images/thumb/7/73/Skill_Shot.png/40px-Skill_Shot.png"
     },
     pit: {
       name: "Pune capcane",
       img: "/images/thumb/e/e1/Trapping.png/40px-Trapping.png"
     },
     fin: {
       name: "Îndemânare motrică",
       img: "/images/thumb/1/18/Fms.png/40px-Fms.png"
     },
     rep: {
       name: "Reparare",
       img: "/images/thumb/d/d5/Repairing.png/40px-Repairing.png"
     },
     lea: {
       name: "Conducere",
       img: "/images/thumb/4/44/Leadership.png/40px-Leadership.png"
     },
     tac: {
       name: "Tactică",
       img: "/images/thumb/9/91/Skill_Tactic.png/40px-Skill_Tactic.png"
     },
     tra: {
       name: "Comerț",
       img: "/images/thumb/f/f3/Skill_Trading.png/40px-Skill_Trading.png"
     },
     ani: {
       name: "Instinct pentru animale",
       img: "/images/thumb/9/9d/AnimalInstinct.png/40px-AnimalInstinct.png"
     },
     app: {
       name: "Aspect",
       img: "/images/thumb/4/4c/Skill_Appearance.png/40px-Skill_Appearance.png"
     },
     fbdef: {
       name: "Apărare (Bonus pentru bătălia la fort)",
       img: "/images/8/82/Set_Fb_defense.png"
     },
     fboff: {
       name: "Atac (Bonus pentru bătălia la fort)",
       img: "/images/3/30/Set_Fb_offense.png"
     },
     fbres: {
       name: "Rezistenţă Bonus pentru bătălia la fort",
       img: "/images/4/4b/Resistance.png"
     },
     fbdefs: {
       name: "Apărare (Bonus pentru sectorul bătăliei pentru fort)",
       img: "/images/1/1a/Set_Fb_defense_sec.png"
     },
     fboffs: {
       name: "Atac (Bonus pentru sectorul bătăliei pentru fort)",
       img: "/images/f/fe/Set_Fb_offense_sec.png"
     },
     fbdmgs: {
       name: "Daună (Bonus pentru sectorul bătăliei pentru fort)",
       img: "/images/b/b3/Damages_sector.png"
     },
     xp: {
       name: "Experiență de la munci, dueluri și bătălii de fort (%)",
       img: "/images/7/71/Set_xp.png"
     },
     money: {
       name: "Bani de la munci și dueluri (%)",
       img: "/images/d/df/Set_money.png"
     },
     luck: {
       name: "Spor de noroc",
       img: "/images/c/c1/Set_luck.png"
     },
     regen: {
       name: "Regenerare",
       img: "/images/5/53/Regeneration.png",
     },
     drop: {
       name: "Improved drop chance",
       img: "/images/thumb/b/b8/Drop.png/40px-Drop.png"
     },
     spd: {
       name: "Viteză",
       img: "/images/thumb/1/1a/QuarterHorse.png/40px-QuarterHorse.png"
     }
   },
   sorting: {
     'Putere': '{"str":1}',
     'Mobilitate': '{"mob":1}',
     'Dexteritate': '{"dex":1}',
     'Carismă': '{"cha":1}',
     'Construcție': '{"str":1,"con":1}',
     'Vigoare': '{"str":1,"vig":1}',
     'Rezistenţă': '{"str":1,"tou":1}',
     'Perseverență': '{"str":1,"sta":1}',
     'Puncte de viață': '{"str":1,"hea":1}',
     'Călărie': '{"mob":1,"rid":1}',
     'Reflex': '{"mob":1,"ref":1}',
     'Ferire': '{"mob":1,"dod":1}',
     'Ascundere': '{"mob":1,"hid":1}',
     'Înot': '{"mob":1,"swi":1}',
     'Țintire': '{"dex":1,"aim":1}',
     'Împușcare': '{"dex":1,"sho":1}',
     'Pune capcane': '{"dex":1,"pit":1}',
     'Îndemânare motrică': '{"dex":1,"fin":1}',
     'Reparare': '{"dex":1,"rep":1}',
     'Conducere': '{"cha":1,"lea":1}',
     'Tactică': '{"cha":1,"tac":1}',
     'Comerț': '{"cha":1,"tra":1}',
     'Instinct pentru animale': '{"cha":1,"ani":1}',
     'Aspect': '{"cha":1,"app":1}',
     'Puncte de muncă pentru construire': '{"str":3,"con":3,"dex":1,"rep":1,"cha":1,"lea":1}',
     'Experiență de la munci, dueluri și bătălii de fort (%)': '{"xp":1}',
     'Bani de la munci și dueluri (%)': '{"money":1}',
     'Increased Luck (%)': '{"luck":1}',
     'Regenerare (%)': '{"regen":1}',
     'Spor de noroc (%)': '{"drop":1}',
     'Viteză (%)': '{"spd":1,"hspd":1,"mob":1,"rid":1}',
     'Daună medie': '{"dmg_min":0.5,"dmg_max":0.5,"dmglvl":1}',
     'Daună maximă': '{"dmg_max":1,"dmglvl":1}',
     'Iteme upgradabile': '{"bool":true,"upg":1}',
     'Nu poate fi upgradat': '{"bool":true,"upg":0}',
     'Licitabil': '{"bool":true,"auc":1}',
     'Nevandabil': '{"bool":true,"auc":0}'
   }
 },
 initPage: function() {
   //Append input level
   if ($("#input_level").length === 1) {
     var input_level = $('<input type="number" style="width:80px;" class="west" placeholder="' + westui.lang.input_level + '" min="0" max="150">').bind("propertychange keyup input paste", function() {
       if (this.value > 150) {
         this.value = 150;
       } else if (this.value < 0) {
         this.value = 0;
       }
       $(".calc").each(function() {
         if (input_level.val() == 0) {
           $(this).html(this.id);
           $('.per_level_off').addClass('per_level').removeClass('per_level_off');
         } else {
           $(this).html(Math.ceil(Number(this.id) * input_level.val()));
           $('.per_level').addClass('per_level_off').removeClass('per_level');
         }
       });
     }).appendTo($("#input_level"));
   }
   //Search
   if ($("#input_search").length === 1) {
     var input_search = $('<input type="search" class="west" placeholder="' + westui.lang.input_search + '">').bind("propertychange keyup input paste", function() {
       var val = this.value.toLowerCase();
       if (val === ) {
         $('.item_container').show();
       } else {
         $('.item_container').hide();
         $('.item_container').filter(function() {
           return $(this).attr('data-popup').toLowerCase().indexOf(val) > -1;
         }).show();
       }
     }).appendTo($("#input_search"));
   }
   //Switch weapons
   if ($("#switch").length === 1) {
     $("#fire").hide();
     $("#switch").on("click", function() {
       $('#melee, #fire').toggle();
     });
   }
   //Switch products
   if ($("#switch_prod").length === 1) {
     $("#prod2").hide();
     $("#switch_prod").on("click", function() {
       $('#prod, #prod2').toggle();
     });
   }
   //Show a "plain text" popup in the template
   if (westui.config.plain_popup && (new RegExp(mw.config.get('wgFormattedNamespaces')[10] + '\:Item\_*').test(mw.config.get('wgPageName'))) && ($('.item_container').length === 1)) {

$('#mw-content-text').append('

');

     $('#popup_plain').hide();
     $('#popup_plain_contents').append(westui.popup.createPopup($('.item_container').attr('data-popup'), $('.item_container').attr('data-cdn-cat'), $('.item_container').attr('data-cdn-img'), 0));
     $('#popup_plain').slideDown();
   }
   //On dbl click on item, redirect the user to the template
   if (westui.config.redirect_on_dblclick) {
     $('.item_container img').on('dblclick', function() {
       window.location = '/wiki/' + mw.config.get('wgFormattedNamespaces')[10] + ':Item_' + JSON.parse($(this).parent().attr('data-popup')).id / 1000;
     });
   }
   if (westui.config.link_on_dblclick) {
     $('.item_container img').on('dblclick', function() {
       window.location = '/wiki/' + $(this).parent().attr('data-link');
     });
   }
 },
 popup: {
   content: "",
   delay: 200,
   active: false,
   show: function(obj) {
     westui.popup.content = westui.popup.createPopup($(obj).attr('data-popup'), $(obj).attr('data-cdn-cat'), $(obj).attr('data-cdn-img'), parseInt($(obj).attr('data-lvl')));
     westui.popup.active = true;
     westui.popup.setTimeout();
     westui.popup.getContainer().html(westui.popup.content);
   },
   hide: function() {
     westui.popup.getEl().css({
       display: 'none',
       top: 0,
       left: 0
     });
     westui.popup.active = false;
     westui.popup.clearTimeout();
   },
   setTimeout: function() {
     westui.popup.clearTimeout();
     westui.popup.timer = window.setTimeout(function() {
       westui.popup.getEl().css('display', 'block');
     }, westui.popup.delay);
   },
   clearTimeout: function() {
     if (westui.popup.timer) window.clearTimeout(westui.popup.timer);
   },
   getEl: function() {
     return $('#popup_window');
   },
   getContainer: function() {
     return $('#popup_contents');
   },
   createPopup: function(data, cdn_cat, cdn_name, lvl) {
     data = JSON.parse(data);

var html = '


';

     var upgraded = false;
     if ((lvl >= 1) && (lvl <= 5)) {
       upgraded = true;
       data.auc = false;
     }
     if (data.dmg_min && data.dmg_max) {
       if (upgraded) {
         data.dmg_min += Math.round(Math.max(1, data.dmg_min * 0.1 * lvl));
         data.dmg_max += Math.round(Math.max(1, data.dmg_max * 0.1 * lvl));
       }

html += '

';

     }
     if (data.text) {
       for (var i = 0; i < data.text.length; i++) {

html += '

';

       }
       html += '
'; } for (var cat in westui.lang.popup) { var cnt = 0; for (var key in westui.lang.popup[cat]) { if (data.hasOwnProperty(key)) { cnt++; var per_level = ""; if (data[key] < 0) { if ($('#input_level input').val() > 0) { data[key] = Math.ceil($('#input_level input').val() * -data[key]); if (upgraded) { data[key] += Math.round(Math.max(1, data[key] * 0.1 * lvl)); } } else { data[key] = -data[key]; per_level = " (" + westui.lang.per_level + ")"; if (upgraded) { data[key] = Math.round(1e6 * (data[key] * 1 + Math.round(Math.max(1, data[key] * 1000 * lvl)) / 10000)) / 1e6; } } } else if (upgraded) { if (data[key] < 1) { data[key] = Math.round(1e6 * (data[key] * 1 + Math.round(Math.max(1, data[key] * 1000 * lvl)) / 10000)) / 1e6; } else { data[key] += Math.round(Math.max(1, data[key] * 0.1 * lvl)); } } html += westui.lang.popup[cat][key].replace('#1', data[key]).replace('#2', per_level); } } if (cnt > 0) { html += '
'; } } if (data.textjob) { for (var i = 0; i < data.textjob.length; i++) {

html += '

';

       }
       html += '
'; } if (data.bonus) { for (var i = 0; i < data.bonus.length; i++) {

html += '

';

       }
       html += '
'; } if (data.jobs) {

html += '

';
       for (var i = 0; i < data.jobs.length; i++) {
html += '';
       }
html += '

';

     }
     if (data.craft) {

html += '

';

     }

html += '

';

     return html;
   },
   setPosition: function(e) {
     var window_width = $(window).width();
     var window_height = $(window).height();
     var popup_width = westui.popup.getEl().outerWidth();
     var popup_height = westui.popup.getEl().outerHeight();
     var pos_x = e.clientX;
     var pos_y = e.clientY;
     var top;
     var left;
     var margin_top = 20;
     var margin_left = 20;
     if (pos_x + popup_width + margin_left > window_width) {
       left = pos_x - popup_width - margin_left + (e.pageX - e.clientX);
     } else {
       left = pos_x + margin_left + (e.pageX - e.clientX);
     }
     if (pos_y + popup_height + margin_top > window_height) {
       top = window_height - popup_height + (e.pageY - e.clientY);
     } else {
       top = pos_y + margin_top + (e.pageY - e.clientY);
     }
     westui.popup.getEl().css({
       top: top,
       left: left
     });
   },
   init: function() {
     //Append popup container

$('body').append('

');

     //Set events
     $(document).on('mouseenter', '.item_container', function(e) {
       westui.popup.show(this);
       westui.popup.setPosition(e);
     });
     $(document).on('mouseleave', '.item_container', function() {
       westui.popup.hide();
     });
     $(document).on('mousemove', '.item_container', function(e) {
       westui.popup.setPosition(e);
     });
     $('.item_level').mousedown(function(e) {
       e.preventDefault();
     });
     $(document).on('click', '.upgrade', function() {
       var container = $(this).closest('.item_container');
       var lvl = parseInt(container.attr('data-lvl'));
       if (lvl !== 5) {
         container.attr('data-lvl', lvl + 1);
         container.find('.level').html(lvl + 1);
       }
       westui.popup.show(container[0]);
     });
     $(document).on('click', '.downgrade', function() {
       var container = $(this).closest('.item_container');
       var lvl = parseInt(container.attr('data-lvl'));
       if (lvl !== 0) {
         container.attr('data-lvl', lvl - 1);
         container.find('.level').html(lvl - 1);
       }
       westui.popup.show(container[0]);
     });
   }
 },
 set_calc: {
   bonus: {
     //If there are any other "special" bonuses, they will be dynamically retrieved and stored there
     extra_set_bonus: {}
   },
   //Bonuses from all sets / items :
   data: {},
   //Status of all items (item lvl, activated or not)
   itemStatus: {},
   getData: function() {
     $('.set_container').each(function() {
       var set_id = $(this).attr('data-set-id');
       westui.set_calc.itemStatus[set_id] = {};
       westui.set_calc.data[set_id] = {
         items: {},
         set: {}
       };
     });
     //Get bonuses from all sets
     $('.infoSet').each(function() {
       var set_id = $(this).attr('data-set-id');
       $(this).find('.infosetatt').each(function() {
         var nb = $(this).attr('data-nb');
         westui.set_calc.data[set_id].set[nb] = {};
         $(this).find('.set_bonus').each(function() {
           key = $(this).attr('data-type');
           if ($(this).find('.calc').length !== 0) {
             westui.set_calc.data[set_id].set[nb][key] = -parseFloat($(this).find('.calc').attr('id'));
           } else {
             westui.set_calc.data[set_id].set[nb][key] = parseFloat($(this).find('.val').text());
           }
           if (!westui.config.set_bonus.hasOwnProperty(key)) {
             westui.set_calc.bonus.extra_set_bonus[key] = {
               img: $(this).find('img').attr('src'),
               name: $(this).find('#tooltip_content').text()
             };
           }
         });
       });
     });
     //Get bonuses from all item sets
     $('.set_container').each(function() {
       var set_id = $(this).attr('data-set-id');
       $(this).find('.item_container').each(function() {
         var json = JSON.parse($(this).attr('data-popup'));
         if ($(this).is(":hidden")) {
           westui.set_calc.itemStatus[set_id][json.id] = false;
         } else {
           westui.set_calc.itemStatus[set_id][json.id] = 0;
         }
         for (var prop in json) {
           if (json.hasOwnProperty(prop) && (westui.config.set_bonus.hasOwnProperty(prop) || westui.set_calc.bonus.extra_set_bonus.hasOwnProperty(prop))) {
             if (!westui.set_calc.data[set_id].items[prop]) {
               westui.set_calc.data[set_id].items[prop] = {};
             }
             westui.set_calc.data[set_id].items[prop][json.id] = json[prop];
           }
         }
       });
     });
   },
   calc: function() {
     //Only calc if a player level is provided
     if ($('#input_level').length === 0 | $('#input_level input').val() !== "") {
       var level = parseInt($('#input_level input').val());
       total = {};
       for (var set_id in westui.set_calc.data) {
         for (var key in westui.set_calc.data[set_id].items) {
           for (var item_id in westui.set_calc.data[set_id].items[key]) {
             if (westui.set_calc.itemStatus[set_id][item_id] !== false) {
               lvl = westui.set_calc.itemStatus[set_id][item_id];
               if (!total[key]) {
                 total[key] = 0;
               }
               var value = westui.set_calc.data[set_id].items[key][item_id];
               if (westui.set_calc.data[set_id].items[key][item_id] < 0) {
                 //If bonus (per Level)
                 value = -value;
                 if (westui.set_calc.itemStatus[set_id][item_id] > 0) {
                   //If item upgraded
                   total[key] += Math.ceil(value * level) + Math.round(Math.max(1, Math.ceil(value * level) * 0.1 * lvl));
                 } else {
                   total[key] += Math.ceil(value * level);
                 }
               } else {
                 if (westui.set_calc.itemStatus[set_id][item_id] > 0) {
                   if (value < 1) {
                     total[key] += Math.round(1e6 * (value * 1 + Math.round(Math.max(1, value * 1000 * lvl)) / 10000)) / 1e6;
                   } else {
                     total[key] += value + Math.round(Math.max(1, value * 0.1 * lvl));
                   }
                 } else {
                   total[key] += value;
                 }
               }
             }
           }
         }
         var item_nb = 0;
         for (var item_id in westui.set_calc.itemStatus[set_id]) {
           if (westui.set_calc.itemStatus[set_id][item_id] !== false) {
             item_nb++;
           }
         }
         for (var key in westui.set_calc.data[set_id].set[item_nb]) {
           if (!total[key]) {
             total[key] = 0;
           }
           if (westui.set_calc.data[set_id].set[item_nb][key] < 0) {
             total[key] += Math.ceil(-westui.set_calc.data[set_id].set[item_nb][key] * level);
           } else {
             total[key] += westui.set_calc.data[set_id].set[item_nb][key];
           }
         }
       }
       //Create the html table

var html = '

<tbody>

' + westui.lang.total + '
';
       for (var key in westui.config.set_bonus) {
         if (total.hasOwnProperty(key)) {
html += '
<img src="' + westui.config.set_bonus[key].img + '">+' + total[key] + (['xp', 'money', 'luck', 'spd', 'regen', 'drop'].indexOf(key) !== -1 ? "%" : "") + '
' + westui.config.set_bonus[key].name + '
';
         }
       }
       for (var key in westui.set_calc.bonus.extra_set_bonus) {
         if (total.hasOwnProperty(key)) {
html += '
<img src="' + westui.set_calc.bonus.extra_set_bonus[key].img + '">+' + total[key] + (['xp', 'money', 'luck', 'spd', 'regen', 'drop'].indexOf(key) !== -1 ? "%" : "") + '
' + westui.set_calc.bonus.extra_set_bonus[key].name + '
';
         }
       }
       //Display the result at the bottom of the page
       $('#set_calc').html(html);
     } else {
       $('#set_calc').html("");
     }
   },
   initEvents: function() {
     //Deactivate / activate item on click
     $('.item_container > img').on('click', function() {
       var item_container = $(this).closest('.item_container');
       item_container.toggleClass('item_off');
       var set_id = item_container.closest('.set_container').attr('data-set-id');
       var item_id = JSON.parse(item_container.attr('data-popup')).id;
       if (item_container.hasClass('item_off') || item_container.is(":hidden")) {
         westui.set_calc.itemStatus[set_id][item_id] = false;
       } else {
         westui.set_calc.itemStatus[set_id][item_id] = parseInt(item_container.attr('data-lvl'));
       }
       westui.set_calc.calc();
     });
     //Update item level on upgrade / downgrade
     $(document).on('click', '.upgrade, .downgrade', function() {
       var item = $(this).closest('.item_container');
       var set_id = item.closest('.set_container').attr('data-set-id');
       if (!item.hasClass('item_off') && !item.is(":hidden")) {
         westui.set_calc.itemStatus[set_id][JSON.parse(item.attr('data-popup')).id] = parseInt(item.attr('data-lvl'));
         westui.set_calc.calc();
       }
     });
     //Calc again when player level changes
     $("#input_level").bind("propertychange keyup input paste", function() {
       westui.set_calc.calc();
     });
     //Activate/deactivate melee/fire weapon when the switch btn is clicked
     $("#switch").on('click', function() {
       $('#melee, #fire').each(function() {
         var item = $(this).find('.item_container');
         var set_id = $(this).closest('.set_container').attr('data-set-id');
         if ($(this).is(":hidden")) {
           westui.set_calc.itemStatus[set_id][JSON.parse(item.attr('data-popup')).id] = false;
         } else {
           westui.set_calc.itemStatus[set_id][JSON.parse(item.attr('data-popup')).id] = parseInt(item.attr('data-lvl'));
         }
       });
       westui.set_calc.calc();
     });
   },
   init: function() {
     westui.set_calc.initEvents();
     westui.set_calc.getData();
$('#mw-content-text').append('
');
     if ($('#input_level').length === 0)
       westui.set_calc.calc();
   }
 },
 sorting: {
   sortItems: function(param) {
     $('.item_container').removeAttr('data-sort').show();
     function calcSortVal(el) {
       var data = JSON.parse($(el).attr('data-popup'));
       var char_lvl = $('#input_level input').val();
       char_lvl = (char_lvl ? char_lvl : 150);
       var none = (Object.keys(param).indexOf('id') !== -1 || (param.bool && param.bool === true));
       var val = 0;
       if (param.bool && param.bool === true) {
         val = 1;
         for (var prop in param) {
           if (prop !== "bool" && data[prop] !== param[prop]) {
             val = 0;
           }
         }
       } else {
         for (var prop in param) {
           if (prop === "id") {
             val -= data[prop];
           } else if ((!data.lvl || data.lvl <= char_lvl)) {
             if (data[prop]) {
               if (data[prop] < 0) {
                 val += Math.ceil(-data[prop] * char_lvl) * param[prop];
               } else {
                 val += data[prop] * param[prop];
               }
             }
           }
         }
       }
       $(el).attr('data-sort', val);
       if (val == 0) {
         $(el).hide();
       }
       if ($(el).find('.number').length !== 0) {
         if (none) {
           $(el).find('.number').html();
         } else {
           $(el).find('.number').html(val);
         }
       } else if (!none) {
$(el).append('

' + val + '

');
       }
     }
     $('#mw-content-text').find('.sorting_hidden').hide();
     $('.sorting_container').each(function() {
       $(this).find('.item_container').sort(function(a, b) {
         if (!$(a).attr('data-sort')) {
           calcSortVal(a);
         }
         if (!$(b).attr('data-sort')) {
           calcSortVal(b);
         }
         return $(b).attr('data-sort') - $(a).attr('data-sort');
       }).appendTo($(this));
     })
   },
   init: function() {
     if ($('div#sort_items').length === 1) {
var html = "";
       $('div#sort_items').html(html);
       $('select#sort_items').on('change', function() {
         westui.sorting.sortItems(JSON.parse($(this).find("option:selected").attr('value')));
       });
     }
   }
 },
 init: function() {
   westui.initPage();
   westui.popup.init();
   if (westui.config.enable_sorting)
     westui.sorting.init();
   if (westui.config.enable_set_calc && $('.infoSet').length !== 0) {
     westui.set_calc.init();
   }
 }

}; westui.init();