您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
TW-Collections - see history
当前为
// ==UserScript== // @name TW-Collections // @description TW-Collections - see history // @include http*://*.the-west.*/game.php* // @author Dun // @version 1.4.6.3 // @history 1.4.6.3 rev. TW 2.29 // @history 1.4.6.2 rev. TW 2.26 // @history 1.4.6.1 rev. TW 2.24 // @history 1.4.6 add Ro translation // @history 1.4.5 correcting a bug on current market bid // @history 1.4.4 Correct bugs & update 2.23 & add upgradeables search in inventory // @history 1.4.3 Correct refresh bug // @history 1.4.2 update for TW 2.21 // @history 1.4.1 correct bugs and add include for beta // @history 1.4.0.2 remove personnal frienset from sets list // @history 1.4.0 add Set Window and crafting items icons // @history 1.3.9 correct for es translation // @history 1.3.8 miscelaneous changes - update link to patebin (thanks to Tom Robert ) // @history 1.3.7 correct bug for double item wearing - reactivate update // @history 1.3.6 correct translations links // @history 1.3.5 correct bugs save & trader icons // @history 1.3.4 correct bugs save settings // @history 1.3.3.9 correct bugs for 2.1, deactivate update since userscript is dead // @history 1.3.3.8 update TW version 2.1 // @history 1.3.3.7 maj for 2.09 // @history 1.3.3.6 correcting tips in mobile trader // @history 1.3.3.5 add vertical scrollbar in set & collection selectboxs // @history 1.3.3.4 maj 2.08 & optimisation chargement items de collections // @history 1.3.3.3 Fix ended bids // @history 1.3.3.2 correct End bids on collector list, add setting for deactivate menu mouse hover // @history 1.3.3 Mod. listcolector: recherche dans le marché add direct link to market / mobile trader, add filters // @history 1.3.2.1 Fix inventory bug // @history 1.3.2 fix for the the mobile trader link, add the new TW items of the achieved collections, add pictures on collections list // @history 1.3.1.3 fix for the shop display // @history 1.3.1.2 corrections // @history 1.3.1.1 corrections // @history 1.3.1 correction pour le nouveau marchand ambulant + patch TWDB new // @history 1.3.0 correction trad en + ajout lien forum // @history 1.2.9 correction trad en et logout sans confirmation + ajout trad Slovak // @history 1.2.7 correction trad en et logout sans confirmation // @history 1.2.7 ajout filtres inventaires, correction // @history 1.2.7 modification du systeme de langue et de l'updater, simplification suppression rapport, etc... // @history 1.2.6.1 correction affichage TW api // @history 1.2.6 correction lang et changement de nom // @history 1.2.5 corrections ... or not :) // @history 1.2.4 Création d'une barre d'outils dans l'inventaire (recettes, sets, consommables,doublons) // @history 1.2.3 ajout d'un bouton doublon dans l'inventaire et correction bug lang // @history 1.2.2 passage 2.0.6 // @history 1.2.1 passage 2.0.5 // @history 1.2.0 correction bugs maj + Traduction italienne (grazie tw81) // @history 1.1.9 correction attente TWDB.... // @nocompat Chrome // @grant none // @namespace https://greasyfork.org/users/2196 // ==/UserScript== // (function (e) { var t = document.createElement("script"); t.type = "application/javascript"; t.textContent = "(" + e + ")();"; document.body.appendChild(t); t.parentNode.removeChild(t); }) (function () { if (/.+\.the-west\..*\/game\.php.*/.test(window.location.href)) { TWT = { DEBUG: false, LANG: {}, info: { lang: 'en', version: '1.4.6.3', min_gameversion: '2.0', max_gameversion: '2.29', idscript: '1670' }, languages: [{ short_name: 'fr', name: 'Francais', translator: 'Dun', version: '1.4.0' }, { short_name: 'en', name: 'English', translator: 'Dun', version: '1.4.0' } ], images: { cup: "/images/icons/achv_points.png", logout: "data:image/jpg;base64,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", twdb_iconNew: "data:image/png;base64,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", traderImg: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAgGBAf/xAAoEAACAQMEAgEDBQAAAAAAAAABAgMEBQYABxESEyIhCBRBMTIzQkP/xAAXAQEBAQEAAAAAAAAAAAAAAAAFAwQH/8QAJREBAAIBAwQBBQEAAAAAAAAAAQIRAwAEURITITFhIjJBkaGx/9oADAMBAAIRAxEAPwCzsr3ZqcwrZ446eojpYzykVNTuY2JcIZZCrKSo/cQG9V9jyCNZbNZd1dvJhd7NFEQ0qSwLJP4lVPcPCrop5Kle3aRf7AN0AZxg9uMvXHN0qy03ZJqWakeOZZJPGfNG0aq0kRZgU6NCyOAOP4jyew45MUxHJtsIb/kWZbwPlEF9t1PLRQxUJhWCKPvKKmY9zxKxk95OVAABJYk64jk3O7nMg3RJtFOktDgugWxG3jzty5p9yeVmEgOmKfcvsvzVfCJ/lGbOfUfie5O3tBmFROszVSc+V06s3Hx7KRyrA8gr+CCNNTz9PuN33IcBlym3xVTU94vVdcKX7qDxyeGadpI2dQB1ZkZXK8AgvwfkHTT+HsyxRcmSpUWeqdIY9/vSAGDqOb9/PrXoO82DYxJFBf5rYGqFk7xOsjRtFIVA7o6FXRuPUlWHK/B5HxrB2/aDF83ySltuZVtzutGKtpoqGuuLyQRuSf8AM+sgHYhVkDhQfUDTTRnZwu5hLpLTjhK1XeqbiUT19P8ATz+/zzqobJYLVZLelut1KEiT9Ofkk/kk/knTTTV4gxF0urFo8Gv/2Q==" }, menu_callback: { goHome: "TaskQueue.add(new TaskWalk(Character.homeTown.town_id,'town'))", goToDaily1: 'Map.center(1920, 2176);', goToDaily2: 'Map.center(28288,16768);', ownSaloon: 'SaloonWindow.open(Character.homeTown.town_id);', openMarket: 'MarketWindow.open(Character.homeTown.town_id);', mobileTrader: "west.window.shop.open().showCategory('trader');", forum: "ForumWindow.open();", listNeeded: 'TWT.WindowCollection.open();', openOptions: "TWT.Options.open('setting')" }, css: { style: "position:relative;top:0px;left:0px;width:12px;height:12px;padding:0px;border:0px;margin:0px;", styleT: "position:absolute;top:4px;left:3px;width:15px;height:15px;padding:0px;border:0px;margin:0px;", styleN: "position:absolute;top:120px;left:25px;padding:0px;border:0px;margin:0px;", styleDB: "position:absolute;top:0px;left:0px;padding:0px;border:0px;margin:0px;" }, langPatchs: { cs: { link: "https://greasyfork.org/cs/scripts/7260", texte: "Czech - čeština", author: "Dr.Keeper" }, es: { link: "https://greasyfork.org/es/scripts/7313", texte: "Spanish - Español", author: "pepe100" }, de: { link: "https://greasyfork.org/de/scripts/1672", texte: "German - Deutsch", author: "Hanya" }, it: { link: "https://greasyfork.org/it/scripts/1675", texte: "Italian - Italiano", author: "tw81" }, hu: { link: "https://greasyfork.org/scripts/7261", texte: "Hungarian - Magyar", author: "Zoltan80" }, sl: { link: "https://greasyfork.org/scripts/7259", texte: "Slovak - Slovenčina", author: "Surge" }, pl: { link: "https://greasyfork.org/pl/scripts/1674", texte: "Polish - Polski", author: "Dun from Darius II mod" }, pt: { link: "https://greasyfork.org/pt-BR/scripts/7312", texte: "Portuguese - Português", author: "VSaantiago" }, ru: { link: "https://greasyfork.org/ru/scripts/7271", texte: "Russian - Pу́сский", author: "Anch665" }, ro: { link: "https://greasyfork.org/scripts/9037", texte: "Romana", author: "Peta" } }, langs: { fr: { description: "<center><BR /><b>TW Collections</b><br>Astuces et signalement des items manquants des collections<br>Liste des items manquants des collections<br>Frais bancaires en survol avant dépot<br>Divers raccourcis et fonctions<br> Suppressions des rapports<br> Frais bancaires<br>Doublons dans l'inventaire<br>etc...</center>", Options: { tab: { setting: 'Réglages' }, checkbox_text: { box: { title: 'Raccourcis menus', options: { goHome: 'Aller à sa ville', goToDaily1: 'Aller à la ville abandonnée', goToDaily2: 'Aller au village de Waupee', ownSaloon: 'Ouvrir votre saloon', openMarket: 'Ouvrir le marché', mobileTrader: 'Ouvrir le marchand ambulant', forum: 'Ouvrir le forum', listNeeded: 'Items manquants des collections' } }, collection: { title: 'Collections', options: { gereNewItems: 'Gérer les nouveaux items des succés déjà obtenus', patchsell: 'Signalement des items manquants aux collections dans l\'inventaire', patchtrader: 'Signalement des items nécessaires aux collections chez les marchands', patchmarket: 'Signalement des items nécessaires aux collections dans le marché', filterMarket: 'Filtre dans le marché pour n\'afficher que les items manquants des collections', showmiss: 'Items manquants des collections sur survol' } }, inventory: { title: 'Boutons supplémentaires dans l\'inventaire', options: { doublons: 'Bouton de recherche des doublons', useables: 'Bouton de recherche des consommables', recipe: 'Bouton de recherche des recettes', sets: 'Liste de recherche des sets', sum: "Cumul des prix de vente marchand sur recherche" } }, miscellaneous: { title: 'Divers', options: { lang: 'Language', logout: 'Bouton déconnexion directe', deleteAllReports: 'Action pour supprimer tous les rapports', showFees: 'Frais bancaire en survol', popupTWT: 'Ouverture du menu du script Collections au survol' } }, craft: { title: 'Artisanat', options: { filterMarket: 'Recherche des items de craft dans le marché' // filterMiniMap : 'Recherche des items de craft dans la minimap' } }, twdbadds: { title: 'Add-on Clothcalc', options: { filterBuyMarket: 'Filtre dans le marché pour n\'afficher que les items manquants <a target=\'_blanck\' href="http://tw-db.info/?strana=userscript">(twdb add)</a>' } } }, message: { title: 'Information', message: 'Préférences appliquées', reloadButton: 'Recharger cette page', gameButton: 'Aller sur le jeu', indispo: 'Option indisponible (Collections terminées ou script non diponible)', more: 'Autres ?', moreTip: 'Ouvrir la page des traductions' }, update: { title: ' Mise à jour', updok: 'Le script TW Collection est à jour', updscript: 'Une nouvelle version du script TW Collections est disponible<br/>Mettre à jour ?', updlangmaj: 'Une mise à jour est disponible pour une ou plusieurs langues utilisées avec le script TW Collections.<br/>Cliquez sur les liens ci dessous pour mettre à jour ?', upddaily: 'Journalières', updweek: 'Hebdomadaire', updnever: 'Jamais', checknow: 'Verifier les mises à jour ?', upderror: 'Impossible de mettre le script TW Collections à jour, vous devez installer le script ou la langue manuellement' }, saveButton: 'Sauvegarder' }, Craft: { titleMarket: 'Rechercher cet item dans les ventes du marché', titleMinimap: 'Afficher le travail correspondant dans la minimap' }, ToolBox: { title: 'Fonctionnalités', list: { openOptions: 'Paramètres de l´outil' } }, Doublons: { tip: 'Afficher uniquement les doublons', current: 'Recherche courante', upgradeable: 'Ameliorables', noset: 'Sans items de sets', sellable: 'Vendables', auctionable: 'Commercialisables', tipuse: 'Afficher uniquement les consommables', tiprecipe: 'Afficher uniquement les recettes', tipsets: 'Afficher uniquement les items de sets', sellGain: '$ prix marchand ' }, Logout: { title: 'Déconnecter' }, AllReportsDelete: { button: 'Tout supprimer', title: 'Supprimer tous les rapports', work: 'Job', progress: 'Etat d\'avancement', userConfirm: 'Confirmation utilisateur', loadPage: 'Charger la page', deleteReports: 'Supprimer les rapports', confirmText: 'Etes-vous sur de vouloir supprimer tous les rapports ?', deleteYes: 'Oui, supprimer', deleteNo: 'Non, ne pas supprimer', status: { title: 'Statut', wait: 'Patienter', successful: 'Réussi', fail: 'Erreur', error: 'Erreur' } }, fees: { tipText: 'Frais á %1% : $%2' }, twdbadds: { buyFilterTip: 'Montrer seulement les items manquants', buyFilterLabel: 'Items manquants' }, collection: { miss: "Manquants : ", colTabTitle: "Collections", setTabTitle: "Sets", thText: '%1 item%2 manquant%3', thEncours: 'Vous avez une enchère en cours pour cet article', thFetch: 'Vous pouvez récuperer cet article au marché de %1', allOpt: 'Tous', listText: 'Liste des items manquants des collections', listSetText: 'Liste des items manquants des Sets', collectionFilterTip: 'Montrer seulement les items de collection', collectionFilterLabel: 'Collections seules', select: 'Sélectionner ...', filters: 'Filtres', atTrader: 'Vendu par le marchand ambulant', atBid: 'Enchères en cours', atCurBid: 'Enchères terminées', searchMarket: 'Rechercher dans le marché', atTraderTitle: 'Affichez les items en vente chez le marchand ambulant', atBidTitle: 'Affichez les items en cours d\'enchère', atCurBidTitle: 'Affichez les items récupèrables aux enchères', patchsell: { title: "Cet item est nécessaire pour une collection en cours" } } }, en: { description: "<center><BR /><b>TW-Collections</b><br>Tips and reporting missing items collections <br>list of collection needed items<BR> Bank fees on mouseover <br> Various shortcuts" + "<br>All reports deletion<br> Fees in bank <br> Additional buttons in inventory (duplicates,useables, recipes, sets) <br>etc ...", Options: { tab: { setting: 'Settings' }, checkbox_text: { box: { title: 'Features / Menus', options: { goHome: 'Travel to town', goToDaily1: 'Ghost Town', goToDaily2: 'Waupee Indian Camp ', ownSaloon: 'Open saloon', openMarket: 'Open Market', mobileTrader: 'Open Mobile Trader', forum: 'Open forum', listNeeded: 'Collector\'s items needed' } }, collection: { title: 'Collections', options: { gereNewItems: 'Manage the new items added on succeeded achievements', patchsell: 'Signal missing items in inventory', patchtrader: 'Signal missing items on Traders', patchmarket: 'Signal missing items on Market', showmiss: 'List for missing items on tip', filterMarket: 'Market filter : show only missing items (collections)' } }, inventory: { title: 'Buttons in inventory', options: { doublons: 'Add button for duplicates search', useables: 'Add button for useables search', recipe: 'Add button for recipes search', sets: 'Add button for sets list', sum: 'Show sell sum on search based on merchant prices' } }, miscellaneous: { title: 'Miscellaneous', options: { lang: 'Language', logout: 'Add Logout button', deleteAllReports: 'Add suppress all reports action', showFees: 'Add Bank Fees on Mouseover', popupTWT: 'Open menu of TW Collections on mouse hover' } }, craft: { title: 'Craft', options: { filterMarket: 'Icon for searching craft item in the market' // filterMiniMap : 'Icon for searching craft item job in the minimap' } }, twdbadds: { title: 'Clothcalc Add-on', options: { filterBuyMarket: 'Market filter : show only marked missing items <a target=\'_blanck\' href="http://tw-db.info/?strana=userscript">(twdb add)</a>' } } }, message: { title: 'Information', message: 'Preferences have been applied.', reloadButton: 'Reload this page', gameButton: 'Return to the game', indispo: 'Setting unavailable (Collections completed or script not available)', more: 'More ?', moreTip: 'Open the translations tips page' }, update: { title: 'Update', upddaily: 'Every day', updweek: 'Every week', updnever: 'Never', checknow: 'Check update now ?', updok: "The TW Collection's script is up to date", updlangmaj: 'An update is available for one or more languages of the TW Collections script.<BR>Clic on the links bellow to upgrade.', updscript: 'An update is available for the script TW Collections<br/>Upgrade ?', upderror: 'Unable to upgrade, you should install the script or language manually' }, saveButton: 'Save' }, Craft: { titleMarket: 'Search this item in the market', titleMinimap: 'Find corresponding job in the minimap' }, ToolBox: { title: 'Features', list: { openOptions: 'Settings' } }, Doublons: { tip: 'Show only duplicates', current: 'Current search', upgradeable: 'Upgradeables', noset: 'Without set items', sellable: 'Sellables', auctionable: 'Auctionables', tipuse: 'Show only useables', tiprecipe: 'Show only recipes', tipsets: 'Show only set items', sellGain: '$ from the merchant' }, Logout: { title: 'Logout' }, AllReportsDelete: { button: 'Suppress all', title: 'Suppress all reports', work: 'Job', progress: 'Progress', userConfirm: 'User Confirm', loadPage: 'Load Page', deleteReports: 'Delete reports', confirmText: 'Supress all reports - Are you sure ?', deleteYes: 'Yes, delete', deleteNo: 'No, don\'t delete', status: { title: 'Status', wait: 'Wait', successful: 'Réussi', fail: 'Error', error: 'Error' } }, fees: { tipText: '%1% Fees: $%2' }, twdbadds: { buyFilterTip: 'Show only missing items', buyFilterLabel: 'Missing items' }, collection: { miss: "Missing : ", colTabTitle: "Collections", setTabTitle: "Sets", thText: '%1 missing item%2', thEncours: 'You have a bid for this item', thFetch: 'You may retrieve this item at the market of %1', allOpt: 'All', collectionFilterTip: 'Show only collections items', collectionFilterLabel: 'Collections only', select: 'Select ...', listText: 'Collector\'s items needed', listSetText: 'Set\'s items needed', filters: 'Filters', atTrader: 'Sold by mobile trader', atBid: 'Current bids', atCurBid: 'Ended bids', atTraderTitle: 'Show items on sale at the mobile trader', atBidTitle: 'Show currents bids', atCurBidTitle: 'Show items retrievable at market', searchMarket: 'Search in the market', patchsell: { title: "Items needed to complete collections" } } } }, getLanguage: function () { var detected_lang; try { detected_lang = TWT.scriptStorage .getItem('TWT.Cache.miscellaneous.lang'); if (!isDefined(detected_lang)) { detected_lang = Game.locale.match(/(\S*)_/)[1]; // basé // sur // la // langue // du // serveur } if (!isDefined(detected_lang)) { detected_lang = TWT.info.lang; // Nouveau } } catch (ex) { detected_lang = TWT.info.lang; // béta (w1/w2) ... } finally { var langue = TWT.langs[detected_lang]; if (!isDefined(langue)) { // langue non connue ou // chargement des patchs // lang non fait langue = TWT.langs[TWT.info.lang]; var saved_descr = localStorage .getItem('TWT.Cache.description'); if (isDefined(saved_descr)) { langue.description = saved_descr; // permet // d'initialiser // l'api // avec // la // traductin } EventHandler.listen('twt_lang_started_' + detected_lang, function () { TWT.getLanguage(); return EventHandler.ONE_TIME_EVENT; // Unique }); } else { TWT.info.lang = detected_lang; } return langue; } }, addMissedTrad: function (enTrObj, langTrObj) { if (!isDefined(langTrObj)) { langTrObj = {}; } $ .each( enTrObj, function (ind, item) { if (jQuery.type(item) == "object") { langTrObj[ind] = TWT .addMissedTrad(item, langTrObj[ind]); } else { if (jQuery.type(langTrObj[ind]) == "undefined") { langTrObj[ind] = enTrObj[ind]; } } }); return langTrObj; }, isGreasyLang: function (lang) { var oldIdLangs = ["179395", "179358", "179298", "178773", "180784", "182959", "179302"]; if ($.inArray(lang.idscript, oldIdLangs) > -1) { // old script lang var dlg = new west.gui.Dialog( "Unmaintained language script for TW Collection", "<div><b>You are using an obsolete version of '" + lang.name + "' language script for TW Collection.</b>" + "<br /><br />You should manually uninstall this script and " + "<br /><a target='_blanck' href='" + TWT.langPatchs[lang.short_name].link + "'>" + "Install the correct version of " + lang.name + " script.</a>" + "</div>", west.gui.Dialog.SYS_WARNING).setModal(true, false, { bg: "../images/curtain_bg.png", opacity: 0.4 }).addButton(west.gui.Dialog.SYS_OK).show(); return false; } else { return true; } }, addPatchLang: function (lang) { try { if (TWT.isGreasyLang(lang)) { TWT.langs[lang.short_name] = lang.translation; TWT.languages.push({ 'short_name': lang.short_name, 'name': lang.name, 'translator': lang.translator, 'version': lang.version, 'script': lang.idscript }); TWT.langs[lang.short_name] = TWT.addMissedTrad( TWT.langs["en"], TWT.langs[lang.short_name]); EventHandler.signal('twt_lang_started_' + lang.short_name); } } catch (e) { ErrorLog.log(e); } }, checkIsValidLang: function () { var selLang = TWT.langs[TWT.Settings.checked.miscellaneous.lang] || undefined; if (!isDefined(selLang)) { TWT.Options.open('translate'); TWT.Settings.checked.miscellaneous.lang = TWT.info.lang; TWT.scriptStorage.setItem( 'TWT.Cache.miscellaneous.lang', TWT.info.lang); } }, init: function () { try { EventHandler.signal("twt.init"); // Signalement // pour les // patchs de // langues var that = this; var timeout = 0; this.interval = setInterval( function () { var loading = false; if (isDefined(Character.playerId) && Character.playerId == 0) { loading = false; } else if (!isDefined(ItemManager)) { loading = false; } else if (isDefined(ItemManager.initialized) && !ItemManager.initialized) { loading = false; } else if (isDefined(window.TWDB)) { // null // != // TWDB // && // 'undefined' // != // typeof // TWDB) // { if (!window.TWDB.ClothCalc.ready) { // Attente // des // injections // TWDB loading = false; // si TWDB se plante on arrete // au bout de 20 secondes timeout++; if (timeout > 20) { ErrorLog .log('Stop interval, chargement de TWDB non possible ?'); TWT.isTWDBHere = true; //(pas forcement pret mais présent) loading = true; } } else { TWT.isTWDBHere = true; loading = true; } } else { loading = true; } if (loading) { clearInterval(that.interval); if (TWT.scriptStorage == null) { TWT.scriptStorage = new Storage( "local", "Storage." + TWT.info.idscript); } TWT.LANG = TWT.getLanguage(); // TWT.isTWDBHere = isDefined(window.TWDB) // && window.TWDB.ClothCalc.ready; TWT.Settings.init(); TWT.checkIsValidLang(); if (!TWT.DEBUG) { ScriptUpdater.check( TWT.info.idscript, TWT.info.version); // Register TWT.api(); // TWT.news(); } else { window.DEBUG = true; } TWT.ready = true; EventHandler.signal('twt.ready'); } }, 500); } catch (e) { ErrorLog.log("Erreur d'initialisation", e); ErrorLog.showLog(); TWT.ready = false; } }, Commons: { searchMarket: function (id) { if (!isNaN(id)) { var objS = ItemManager.get(id); id = objS.name; } MarketWindow.open(Character.homeTown.town_id); MarketWindow.showTab('buy'); $("div.market-buy .iSearchbox input", MarketWindow.DOM).val(id); $('span.iconBut_mpb_refresh', MarketWindow.DOM) .click(); }, searchMiniMap: function (id) { var objS = ItemManager.get(id); MinimapWindow.clickQuicklink(objS.name, "task-finish-job"); }, addMarketBuyLink: function (itemId) { var imgMrket = $( '<img class="TWTcraftitem opmarket" id="' + itemId + '" style="background: url(\'/images/window/market/market_icons2.png\') repeat-x scroll 0 0 transparent;cursor: pointer;display: inline-block;position:absolute;top:4px;left:3px;width:15px;height:15px;padding:0px;border:0px;margin:0px;background-position: -17px 0;" ' + 'title="' + TWT.LANG.Craft.titleMarket + '" />') .click( function (e) { TWT.Commons .searchMarket(e.target.attributes['id'].value); }); return imgMrket; }, addMiniMapIcon: function (itemId) { var imgMiniMap = $( '<img class="TWTcraftitem opmap" id="' + itemId + '" style="cursor: pointer;display: inline-block;position:absolute;top:20px;left:3px;width:15px;height:15px;padding:0px;border:0px;margin:0px;" ' + 'src="/images/icons/compass.png"' + 'title="' + TWT.LANG.Craft.titleMinimap + '" />') .click( function (e) { TWT.Commons .searchMiniMap(e.target.attributes['id'].value); }); return imgMiniMap; } }, Settings: { checked: {}, shouldRefresh: {}, init: function () { if (!isDefined(TWT.scriptStorage .getItem('TWT.Cache.Metacol.finished'))) { // Recuperation des collections restantes // TWT.MetaCol.init(); } else { TWT.MetaCol.finished = TWT.scriptStorage .getItem('TWT.Cache.Metacol.finished'); } $ .each( TWT.LANG.Options.checkbox_text, function (ind1, val) { TWT.Settings.checked[ind1] = []; $ .each( TWT.LANG.Options.checkbox_text[ind1]['options'], function (ind2, detail) { var attended; // if // (TWT.MetaCol.finished // && (ind1 // == // 'collection' // || ind2 // == // 'listNeeded')) // { // // // Desactivation // // des // // // options // // de // // // collections // // si // // elles // // sont // // // terminées // // attended // = '0'; // } else { attended = TWT.scriptStorage .getItem('TWT.Cache.' + ind1 + '.' + ind2); // } if (!isDefined(attended)) { if (ind2 == 'lang') { attended = TWT.info.lang; } else { attended = '1'; }; TWT.scriptStorage .setItem( 'TWT.Cache.' + ind1 + '.' + ind2, attended); } TWT.Settings.checked[ind1][ind2] = attended; }); }); TWT.Settings.apply(); }, getValue: function (what) { return eval('TWT.Settings.checked.' + what); }, isChecked: function (what) { return TWT.Settings.getValue(what) == "1"; }, refresh: function (tabOpt) { var refreshed = false; try { for (var key in tabOpt) { if (tabOpt.hasOwnProperty(key)) { var val = tabOpt[key]; if (val != TWT.Settings.getValue(key)) { TWT.scriptStorage.setItem( 'TWT.Cache.' + key, val); var det = key.split('.'); TWT.Settings.checked[det[0]][det[1]] = val; EventHandler.signal(key); refreshed = true; } } }; TWT.LANG = TWT.langs[TWT.Settings .getValue('miscellaneous.lang')] || TWT.langs["en"]; EventHandler.signal('collection.bagupdate'); } catch (e) { ErrorLog.log('Erreur refresh ', e); } return refreshed; }, apply: function () { TWT.LANG = TWT.langs[TWT.Settings .getValue('miscellaneous.lang')] || TWT.langs[TWT.info.lang]; TWT.MenuBox.initListener(); TWT.MenuBox.create(); TWT.Injecteur.startListen(); TWT.Logout.initListener(); if (TWT.Settings.isChecked('inventory.doublons') || TWT.Settings .isChecked('inventory.useables') || TWT.Settings .isChecked('inventory.recipe') || TWT.Settings.isChecked('inventory.sets')) { TWT.Inventaire.create(); } else { TWT.Inventaire.detach(); } TWT.CraftHandler.initListener(); TWT.BankFees.initListener(); TWT.AllReportsDelete.initListener(); if (TWT.Settings.isChecked('craft.filterMarket') || TWT.Settings .isChecked('craft.filterMiniMap')) { TWT.CraftHandler.init(); TWT.CraftHandler.inject(); } if (TWT.Settings.isChecked('miscellaneous.logout')) TWT.Logout.create(); if ((!TWT.MetaCol.finished) || TWT.isTWDBHere) { TWT.Market.initListener(); if (TWT.Settings .isChecked("twdbadds.filterBuyMarket") || TWT.Settings .isChecked('collection.filterMarket')) { TWT.Market.init(); TWT.Market.inject(); } } if (!TWT.MetaCol.finished) { TWT.CollectionsHandler.initListener(); if (TWT.Settings .isChecked('collection.patchsell') || TWT.Settings .isChecked('collection.patchmarket') || TWT.Settings .isChecked('collection.showmiss')) { // EventHandler.signal('collection.bagupdate'); TWT.CollectionsHandler.init(); TWT.CollectionsHandler.inject(); TWT.CollectionsHandler.attachFilter(); } } if (TWT.Settings .isChecked('miscellaneous.showFees')) { TWT.BankFees.attach(); } if (TWT.Settings .isChecked('miscellaneous.deleteAllReports')) { TWT.AllReportsDelete.addStyle(); TWT.AllReportsDelete.attach(); } } }, Options: { open: function (window) { TWT.Options.Windows = wman.open('TWTToolWindow') .addClass('noreload').setMiniTitle( TWT.LANG.Options.tab.setting) .addTab(TWT.LANG.Options.tab.setting, 'TabSetting', TWT.Options.setting.open).addTab( 'Translations', 'TabTranslate', TWT.Options.translate.open); $('<div></div>') .attr({ 'id': 'ToolWindowBody' }) .css({ 'margin-left': '20px', 'margin-right': '20px' }) .appendTo( '.TWTToolWindow .tw2gui_window_content_pane'); if (window == 'setting') { TWT.Options.setting.open(); } else { TWT.Options.translate.open(); } }, translate: { open: function () { var txtArea = '<div style="width:650px;margin-left:15px;margin-top:20px;height:250px;font-size:16px;text-align:justify;padding-bottom:50px;">' + '<h4 style="margin-bottom:20px;"><center>The translation\'s system of the TW Collections script has changed</center></h4>' + "TW Collections script contains just the french and english languages, if you need a different translation you must install one of the script below and reload the TW page<BR><BR>" + "<div style='text-align: center;overflow: auto; height: 165px;font-size:15px;'>"; var langPatchs = TWT.langPatchs; $.each(langPatchs, function (lang) { txtArea += "<a target='_blanck' href='" + langPatchs[lang].link + "'>" + langPatchs[lang].texte + " by " + langPatchs[lang].author + "</a><br>"; }); txtArea += "</div><br>If you want to create your own translation, you can go to <a target=\'_blanck\' href=\'https://greasyfork.org/fr/scripts/1670-tw-collections\'> the home page of the script</a> for more explanations"; + '</div>'; TWT.Options.Windows.activateTab('TabTranslate') .$("div.tw2gui_window_content_pane") .empty(); TWT.Options.Windows .setTitle("Translations for TW Collections"); TWT.Options.Windows .appendToContentPane(txtArea); TWT.Options.Windows.appendToContentPane(TWT .getDunMp()); } }, setting: { open: function () { TWT.Options.Windows.activateTab('TabSetting') .$("div.tw2gui_window_content_pane") .empty(); TWT.Options.Windows .setTitle(TWT.LANG.Options.tab.setting); var save_button = new west.gui.Button( TWT.LANG.Options.saveButton, TWT.Options.save); var l0 = TWT.Options.createLanguage(); var l01 = TWT.Options.createMAJ(); var l1 = TWT.Options.getContent(); var l2 = $('<div style="text-align:center;"/>') .append(save_button.getMainDiv()); TWT.Options.Windows .appendToContentPane($( '<div id="divopts" style="font-weight: bolder;width: 683px;left:10px;" class="daily_activity-list"/>') .append(l0).append(l01).append( l1).append(l2)); $("#divopts", TWT.Options.Windows.getMainDiv()) .css("width: 674px;"); TWT.Options.Windows.appendToContentPane(TWT .getDunMp()); $(".fancytable div.trows div.tbody").css({ "min-height": "30px" }); } }, getContent: function () { var scrollbar = new west.gui.Scrollpane; $ .each( TWT.LANG.Options.checkbox_text, function (key) { var table = new west.gui.Table( true) .setId( 'paramtwt_table_' + key) .createEmptyMessage( '! No Parameters !') .addColumn( "settings_" + key) .appendToThCell( "head", "settings_" + key, TWT.LANG.Options.checkbox_text[key]['title'], "<span style='font-size:12pt;padding-left:25px;'>" + TWT.LANG.Options.checkbox_text[key]['title'] + "</span>"); $ .each( TWT.LANG.Options.checkbox_text[key]['options'], function (i) { if (i != 'lang') { var checkB; if ((TWT.MetaCol.finished && (key == 'collection' || i == 'listNeeded')) || ((key == 'twdbadds') && !TWT.isTWDBHere)) { checkB = $( "<span title='" + TWT.LANG.Options.message.indispo + "' style='color: #808080;font-style: italic;font-size:11pt;padding-left:10px;' />") .append( TWT.LANG.Options.checkbox_text[key]['options'][i]); } else { checkB = new west.gui.Checkbox() .setTitle( TWT.LANG.Options.checkbox_text[key]['options'][i]) .setLabel( "<span style='font-size:11pt;padding-left:10px;'>" + TWT.LANG.Options.checkbox_text[key]['options'][i] + "</span>") .setSelected( TWT.Settings .isChecked(key + '.' + i)) .setId( 'setting_' + key + '_' + i) .getMainDiv(); } table .appendRow( checkB, ''); } }); scrollbar.appendContent(table .getMainDiv()); }); $(scrollbar.getMainDiv()).css({ "height": "300px", "margin-top": "5px;", "font-weight": "normal" }); return $(scrollbar.getMainDiv()); }, createLanguage: function () { TWT.Options.lang_box = new west.gui.Combobox; for (var i = 0; i < TWT.languages.length; i++) { TWT.Options.lang_box.addItem( TWT.languages[i].short_name, TWT.languages[i].name); } TWT.Options.lang_box.select(TWT.Settings .getValue('miscellaneous.lang')); var more_button = new west.gui.Button( TWT.LANG.Options.message.more, TWT.Options.translate.open, this, this, TWT.LANG.Options.message.moreTip); return $("<span />") .append( TWT.LANG.Options.checkbox_text.miscellaneous.options.lang + " : ").append( TWT.Options.lang_box.getMainDiv()) .append(more_button.getMainDiv()); }, createMAJ: function () { TWT.Options.maj_box = new west.gui.Combobox; TWT.Options.maj_box.addItem(0, TWT.LANG.Options.update.updnever); // TWT.Options.maj_box.addItem(3600000,"every // hour"); // TWT.Options.maj_box.addItem(21600000,"every 6 // hours"); TWT.Options.maj_box.addItem(86400000, TWT.LANG.Options.update.upddaily); TWT.Options.maj_box.addItem(604800000, TWT.LANG.Options.update.updweek); TWT.Options.maj_box.select(ScriptUpdater .getInterval()); var maj_button = $('<span title="' + TWT.LANG.Options.update.checknow + '" style="background-color: transparent; background-attachment: scroll; background-clip: border-box;' + 'background-image: url(./images/interface/character/menuicons.jpg); background-position: 0px -250px; ' + 'cursor: pointer; position: absolute; height: 25px; width: 25px; margin: 4px;" />'); maj_button.click(function (e) { TWT.Options.Windows.showLoader(); EventHandler.listen("scriptmaj.ok", function () { new UserMessage( TWT.LANG.Options.update.updok, UserMessage.TYPE_SUCCESS).show(); return EventHandler.ONE_TIME_EVENT; }); ScriptUpdater.forceCheck(TWT.info.idscript, TWT.info.version); TWT.Options.Windows.hideLoader(); }); TWT.Options.maj_box.select(ScriptUpdater .getInterval()); return $("<span style='text-align:left;'/>") .append( " " + TWT.LANG.Options.update.title + " : ").append( TWT.Options.maj_box.getMainDiv()) .append(maj_button); }, save: function () { TWT.Options.Windows.showLoader(); var tblSave = new Array(); $ .each( TWT.LANG.Options.checkbox_text, function (key) { $ .each( TWT.LANG.Options.checkbox_text[key]['options'], function (i) { if (i != 'lang') { tblSave[key + '.' + i] = $( '#setting_' + key + '_' + i) .hasClass( "tw2gui_checkbox_checked"); } }); }); tblSave['miscellaneous.lang'] = TWT.Options.lang_box .getValue(); ScriptUpdater.setInterval(TWT.Options.maj_box .getValue()); TWT.Settings.refresh(tblSave); TWT.Options.Windows.hideLoader(); new UserMessage(TWT.LANG.Options.message.message, UserMessage.TYPE_SUCCESS).show(); wman.close('TWTToolWindow'); } }, MenuBox: { selectbox: null, initListener: function () { EventHandler.listen('miscellaneous.popupTWT', function () { $('#TWT_Icon').remove(); TWT.MenuBox.create(); }); }, create: function () { $('#TWT_Icon').remove(); var a = $('<div></div>').attr({ 'class': 'menulink', 'title': TWT.LANG.ToolBox.title }).css({ 'background-position': '0px -100px' }).mouseleave( function () { $(this).css("background-position", "0px -100px"); }).click(function (e) { TWT.MenuBox.open(e); }); if (TWT.Settings .isChecked('miscellaneous.popupTWT')) { a.mouseenter(function (e) { $(this).css("background-position", "-25px -100px"); TWT.MenuBox.open(e); }); } var b = $('<div></div>').attr({ 'class': 'menucontainer_bottom' }); $('#ui_menubar .ui_menucontainer :first').after( $('<div></div>').attr({ 'class': 'ui_menucontainer', 'id': 'TWT_Icon' }).append(a).append(b)); }, open: function (e) { if (isDefined(this.selectbox)) { this.selectbox.items = []; } else { this.selectbox = new west.gui.Selectbox(true); this.selectbox.setWidth(250).addListener( function (key) { if (key == 99) { eval(TWT.menu_callback['openOptions']); } else { eval(TWT.menu_callback[key]); } }); } var that = this; $.each( TWT.LANG.Options.checkbox_text.box.options, function (indexB, keyB) { if (TWT.Settings.isChecked('box.' + indexB)) that.selectbox .addItem(indexB, keyB); }); this.selectbox.addItem(99, TWT.LANG.ToolBox.list.openOptions); this.selectbox.show(e); this.selectbox.setPosition(e.clientX, e.clientY - 25); $(this.selectbox.elContent).mouseleave(function () { that.selectbox.hide(); }); } }, MetaCol: { group: [], groupSorted: [], marketEC: {}, all: {}, inProgress: {}, erreur: false, ready: false, dirty: true, getMarketEC: function () { $ .ajax({ url: 'game.php?window=building_market&action=fetch_bids&h=' + Player.h, type: 'POST', data: {}, dataType: 'json', async: false, success: function (json) { if (json.error) return new UserMessage( json.msg, UserMessage.TYPE_ERROR) .show(); var result = json.msg.search_result; TWT.MetaCol.marketEC = []; for (var i = 0; i < result.length; i++) { var item = ItemManager .get(result[i].item_id); if (isDefined(item)) { TWT.MetaCol.marketEC[$ .trim(item.name)] = result[i]; } } } }); }, populateInProgress: function (all) { try { var tmpArr = all["achievements"]["progress"]; if (TWT.Settings .isChecked('collection.gereNewItems')) { $.merge(tmpArr, all["achievements"]["finished"]); } $ .each( tmpArr, function (index, value) { var itemsImg = []; var rex = /<span.*?([\s\S]*?)<\/span>/gm; var match; while (match = rex .exec(value.meta)) { var val = match[1]; var srcI = /<img.*?src="(.*?)"/ .exec(val)[1]; var ident = $ .trim(value.title); var strManquant = ""; var name = /<img.*?alt="(.*?)"/ .exec(val)[1]; var shoudBuy = (val .indexOf("locked") > -1); TWT.MetaCol.inProgress[name] = { shouldBuy: (val .indexOf("locked") > -1), src: srcI, img: srcI .match(/\S*.\/(\S*png)/)[1], group: ident }; if (shoudBuy) { if (!isDefined(TWT.MetaCol.group[ident])) { TWT.MetaCol.group[ident] = []; } TWT.MetaCol.group[ident] .push(name); } } }); var sortable = []; for (var group in TWT.MetaCol.group) { sortable.push([group, TWT.MetaCol.group[group]]); } sortable.sort(function (a, b) { var x = a[0]; var y = b[0]; if (typeof x === 'string' && typeof x === 'string') { return x.localeCompare(y); } return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }); TWT.MetaCol.groupSorted = sortable; // DEBUG // TWT.MetaCol.inProgress['Gibus marron'] = { // shouldBuy : true, // src : 'dirty', // img : 'dirty', // group : 'Gibus' // // }; // TWT.MetaCol.group['Gibus'].push('Gibus // marron'); TWT.MetaCol.dirty = false; } catch (e) { this.erreur = "Initialisation des Collections impossible"; ErrorLog.log(e, this.erreur); ErrorLog.showLog(); } }, sort: function (array, key) { return array.sort(function (a, b) { var x = a[key]; var y = b[key]; return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }); }, init: function () { if (this.ready == false) { TWT.MetaCol.setCol = []; TWT.MetaCol.setsProgress = []; TWT.MetaCol.groupSet = []; TWT.MetaCol.all = {}; TWT.MetaCol.group = {}; TWT.MetaCol.inProgress = {}; var that = this; $ .ajax({ url: 'game.php?window=achievement&action=get_list&h=' + Player.h, type: 'POST', data: { 'folder': 'collections', 'playerid': Character.playerId }, dataType: 'json', async: false, success: function (data_return) { var all = eval(data_return); if (all["achievements"]["progress"].length > 0 || TWT.Settings .isChecked('collection.gereNewItems')) { TWT.MetaCol.all = all; TWT.MetaCol.getMarketEC(); TWT.MetaCol .populateInProgress(eval(data_return)); TWT.MetaCol.ready = true; } else { EventHandler .signal('collections_finished'); TWT.MetaCol.finished = true; TWT.scriptStorage .setItem( 'TWT.Cache.Metacol.finished', true); } } }); // init des items de sets manquants var sets = west.storage.ItemSetManager.getAll(); sets = TWT.MetaCol.sort(sets, "name"); for (var jj = 0; jj < sets.length; jj++) { var set = sets[jj]; var items = set.getItems(); var detSet = []; var isFriend = false; for (var zz = 0; zz < items.length; zz++) { var item = ItemManager .getByBaseId(items[zz]); if (!isDefined(item)) { ErrorLog.log("Erreur sur " + items[zz] + " " + set.name); } else { if (item.short .indexOf("friendset_") == -1) { var weared = Wear .carries(item.item_base_id); var bagItem = Bag .getItemByItemId(item.item_id); if (!weared && !(isDefined(bagItem))) { detSet.push(item.name); TWT.MetaCol.setsProgress[item.name] = item.image; } } else { isFriend = true; break; } } }; if (detSet.length > 0 && !isFriend) { TWT.MetaCol.setCol.push([set.name, detSet]); TWT.MetaCol.groupSet[set.name] = detSet; } }; } }, isFinished: function (name) { if (TWT.MetaCol.finished) return true; var item = TWT.MetaCol.inProgress[$.trim(name)]; if (!isDefined(item)) { return true; } else if (isDefined(TWT.MetaCol.group[item.group]) && TWT.MetaCol.group[item.group][0] == true) { return true; } else if (!isDefined(TWT.MetaCol.group[item.group])) { return true; } else return false; }, shouldBuy: function (name) { var item = TWT.MetaCol.inProgress[$.trim(name)]; var marketed = TWT.MetaCol.marketEC[$.trim(name)]; if (isDefined(item) && !isDefined(marketed)) { return item.shouldBuy; } else { return false; } }, getBuyItems: function (name, withbr) { try { if (TWT.Settings .isChecked('collection.showmiss')) { var br = (withbr) ? "<BR>" : " - "; var item = TWT.MetaCol.inProgress[$ .trim(name)]; if (isDefined(item)) { var manquants = TWT.MetaCol.group[item.group]; if (isDefined(manquants) && manquants.length > 0) { var strManq = br; $.each(manquants, function (inD, val) { strManq += "[ " + val + " ]" + br; }); return strManq += " "; } else { return ""; } } } } catch (e) { this.erreur = "Impossible de recenser les items manquants pour " + name; ErrorLog.log(e, this.erreur); } return ""; }, remove: function (arr, name) { name = $.trim(name); var x, _i, _len, _results; _results = []; for (_i = 0, _len = arr.length; _i < _len; _i++) { x = arr[_i]; if (x != name) { _results.push(x); } } return _results; } }, WindowCollection: { scrollbar: null, totalGroup: 0, cbTrader: null, cbBid: null, cbCurBid: null, getAllAnchors: function (what, group) { var that = this; if (!isDefined(what)) { what = TWT.MetaCol.groupSorted; group = TWT.MetaCol.group; } var textinput = new west.gui.Textfield().maxlength( 12).setPlaceholder( TWT.LANG.collection.select).setWidth(165); var anchors = new west.gui.Selectbox(); anchors.setWidth(200); $(anchors.elContent).css({ "max-height": "270px", "width": "250px", "overflow-y": 'auto' }); anchors.addItem(TWT.LANG.collection.allOpt, TWT.LANG.collection.allOpt); $.each(what, function (ind2, val) { anchors.addItem(val[0], val[0]); }); anchors.addItem("99999", " "); anchors.addListener(function (e) { var str = ""; textinput.setValue(e); var arrtmp = {}; if (e == TWT.LANG.collection.allOpt) { arrtmp = what; } else { arrtmp[0] = [e, group[e]]; } that.scrollbar.scrollToTop(); var opt = that.getDiv(arrtmp); $('#showbox').html(opt); that.switchOff(); return true; }); textinput.click(function (e) { anchors.show(e); }); return textinput.getMainDiv(); }, initTrader: function () { var check = -1; var model = west.window.shop.model .getCategory('trader'); if (isDefined(model)) { var timeTrader = model.getRefreshTimeout(); check = timeTrader - Math.round(new Date() / 1000); var traderInv = west.window.shop.model._data.inventory.trader; west.window.shop.model._data.trader_timeout = timeTrader; } if (check < 0) { $ .ajax({ url: 'game.php?window=shop_trader&mode=index', type: 'POST', dataType: 'json', async: false, success: function (data_return) { var all = eval(data_return); traderInv = all["inventory"]["trader"]; west.window.shop.model._data.inventory.trader = all["inventory"]["trader"]; west.window.shop.model._data.trader_timeout = all["traderTime"]; } }); } var traderItems = []; $.each(traderInv, function (i, item) { var obj = item.item_data; if (!isDefined(obj)) { obj = ItemManager.get(item.item_id); } traderItems[obj.name.trim()] = item; }); return traderItems; }, getDiv: function (what) { // var goSearch = function(what) { // MarketWindow.open(Character.homeTown.town_id); // MarketWindow.showTab('buy'); // $("div.market-buy .iSearchbox input", // MarketWindow.DOM).val(what); // $('span.iconBut_mpb_refresh', MarketWindow.DOM) // .click(); // }; var traderItems = this.initTrader(); var that = this; var total = 0; var divMain = $("<br /><table width='100%' cellpading=10 cellspacing=10 style='font-style: bold; -webkit-user-select: text !important; -khtml-user-select: text !important; -moz-user-select: text !important; -ms-user-select: text !important; user-select: text !important;' />"); $ .each( what, function (ind2, valGroup) { var imod = 0; // var bigTR = $('<tr/>'); bigTR.attr('class', 'questlog_entrie'); bigTR.css({ 'color': '#113355' }); bigTR.attr('id', $ .trim(valGroup[0])); bigTR .append($('<td />') .append( $ .trim(valGroup[0]))); divMain.append(bigTR); $ .each( valGroup[1], function (ind3, val) { var tr = $('<tr style="font-weight:bold;font-style:italic;"></tr>'); var td = $('<td class="achieve_list"/>'); var span = $("<span />"); var img = $("<img class='resizedImage' />"); if (isDefined(TWT.MetaCol.inProgress[val])) { img .attr( 'src', TWT.MetaCol.inProgress[val].src); } else { if (isDefined(TWT.MetaCol.setsProgress[val])) { img .attr( 'src', TWT.MetaCol.setsProgress[val]); } } img .attr( "title", TWT.LANG.collection.searchMarket); img .css( "cursor", "pointer"); img .click(function () { TWT.Commons .searchMarket(val); }); span .append( img) .append( " ") .append( val); if (isDefined(traderItems[val .trim()])) { tr .addClass('hasTrader'); var divTrader = $('<img src="' + TWT.images.traderImg + '" style="cursor: pointer;display: inline-block;" ' + 'title="' + TWT.LANG.collection.atTrader + '" />'); divTrader .click(function () { west.window.shop .open() .showCategory( "trader"); }); span .append( " ") .append( divTrader); } var item = TWT.MetaCol.marketEC[$ .trim(val)]; if (isDefined(item)) { var imsell = ''; var sp = ''; if (item.auction_ends_in < 0) { tr .addClass('hasCurrentBid'); imsell = $(' <span ' + 'title="' + TWT.LANG.collection.thFetch .replace( '%1', item.market_town_name) + '" ' + 'style="background: url(\'/images/market/fetch.png\') ' + 'repeat-x scroll 0 0 transparent;cursor: pointer;' + 'height: 12px; display: inline-block;width: 12px;"> </span>'); item.isFinished = true; } else { tr .addClass('hasBid'); sp = $(' <span ' + 'title="' + TWT.LANG.collection.thEncours + '" ' + 'style="background: url(\'/images/window/market/market_icons2.png\') ' + 'repeat-x scroll 0 0 transparent;cursor: pointer;' + 'height: 16px; background-position: -16px 0;display: inline-block;width: 16px;"> </span>'); } span .append( ' ') .append( sp) .append( ' ') .append( imsell) .click( function () { MarketWindow .open( Character.homeTown.town_id, 'offer'); MarketWindow .showTab('offer'); }); } td .append(span); td .appendTo(tr); divMain .append(tr); imod++; }); total += imod; }); var s = (total > 1) ? 's' : ''; $('#thliste').text( TWT.LANG.collection.thText.replace('%2', s) .replace('%3', s).replace('%1', total)); return divMain; }, switchOff: function () { var that = TWT.WindowCollection; if (that.cbTrader.isSelected() || that.cbBid.isSelected() || that.cbCurBid.isSelected()) { $('tr', $('#rightPane')).css('display', 'none'); if (that.cbTrader.isSelected()) { $('.hasTrader', $('#rightPane')).css( 'display', ''); } if (that.cbBid.isSelected()) { $('.hasBid', $('#rightPane')).css( 'display', ''); } if (that.cbCurBid.isSelected()) { $('.hasCurrentBid', $('#rightPane')).css( 'display', ''); } } else { $('tr', $('#rightPane')).css('display', ''); } }, getFiltres: function () { this.cbTrader = new west.gui.Checkbox( TWT.LANG.collection.atTrader, '', this.switchOff) .setTitle(TWT.LANG.collection.atTraderTitle); this.cbBid = new west.gui.Checkbox( TWT.LANG.collection.atBid, '', this.switchOff) .setTitle(TWT.LANG.collection.atBidTitle); this.cbCurBid = new west.gui.Checkbox( TWT.LANG.collection.atCurBid, '', this.switchOff) .setTitle(TWT.LANG.collection.atCurBidTitle); var cbox = $('<div class="jobs_basisbox"><h3>' + TWT.LANG.collection.filters + '</h3></div>'); cbox.append(this.cbTrader.getMainDiv(), '<br />', '<div class="jobs_divider_checkbox" />'); cbox.append(this.cbBid.getMainDiv(), '<br />', '<div class="jobs_divider_checkbox" />'); cbox.append(this.cbCurBid.getMainDiv(), '<br />'); return cbox; }, open: function () { if (!TWT.MetaCol.ready) { TWT.MetaCol.init(); this.interval = setInterval(function () { if (TWT.MetaCol.ready) clearInterval(this.interval); }, 200); } this.Window = wman.open('WindowCollection', TWT.LANG.collection.listText).setMiniTitle( TWT.LANG.collection.listText); this.Window.addTab(TWT.LANG.collection.colTabTitle, "TabCols", this.openCols); this.Window.addTab(TWT.LANG.collection.setTabTitle, "TabSets", this.openSets); if (window == 'sets') { this.openSets(); } else { this.openCols(); } }, openSets: function () { TWT.WindowCollection.Window.activateTab('TabSets') .$("div.tw2gui_window_content_pane") .empty(); TWT.WindowCollection.Window .setTitle(TWT.LANG.collection.listSetText); var rightPane = $('<div id="rightPane"/>').css({ 'height': '100%', 'left': '199px', 'position': 'absolute', 'top': '15px', 'width': '450px' }); var leftPane = $('<div id="leftPane" />').css({ 'position': 'absolute', 'top': '15px', 'height': '100%', 'width': '190px' }); var divide = $('<div class="jobs_divider" />'); divide.css({ 'top': '0px', 'height': '375px' }); $('<div id="WindowSetsBody" />') .append(leftPane) .append(divide) .append(rightPane) .appendTo( '.WindowCollection .tw2gui_window_content_pane'); TWT.WindowCollection.Window.showLoader(); TWT.MetaCol.getMarketEC(); var showbox = $('<div style="max-height: 370px;"></div>'); this.scrollbar = new west.gui.Scrollpane; this.scrollbar.scrollToTop(); $(this.scrollbar.getMainDiv()).css({ 'height': '320px', 'top': '5px' }); this.scrollbar .appendContent($('<div id="showbox" align="center"></div>')); showbox.append(this.scrollbar.getMainDiv()); var th = $('<div id="thliste" />'); th.css({ 'text-align': 'center', 'font-weight': 'bolder' }); $('#rightPane').append(th); $('#rightPane').append(showbox); $('#leftPane').append( TWT.WindowCollection.getAllAnchors( TWT.MetaCol.setCol, TWT.MetaCol.groupSet)); var divMain = TWT.WindowCollection .getDiv(TWT.MetaCol.setCol); $('#showbox').html(divMain); TWT.WindowCollection.Window.hideLoader(); }, openCols: function () { TWT.WindowCollection.Window.activateTab('TabCols') .$("div.tw2gui_window_content_pane") .empty(); TWT.WindowCollection.Window .setTitle(TWT.LANG.collection.listText); var rightPane = $('<div id="rightPane"/>').css({ 'height': '100%', 'left': '199px', 'position': 'absolute', 'top': '15px', 'width': '450px' }); var leftPane = $('<div id="leftPane" />').css({ 'position': 'absolute', 'top': '15px', 'height': '380px', 'width': '190px' }); var divide = $('<div class="jobs_divider" />'); divide.css({ 'top': '0px', 'height': '375px' }); $('<div id="WindowCollectionBody" />') .append(leftPane) .append(divide) .append(rightPane) .appendTo( '.WindowCollection .tw2gui_window_content_pane'); TWT.WindowCollection.Window.showLoader(); TWT.MetaCol.getMarketEC(); var showbox = $('<div style="max-height: 370px;"></div>'); this.scrollbar = new west.gui.Scrollpane; this.scrollbar.scrollToTop(); $(this.scrollbar.getMainDiv()).css({ 'height': '320px', 'top': '5px' }); this.scrollbar .appendContent($('<div id="showbox" align="center"></div>')); showbox.append(this.scrollbar.getMainDiv()); var th = $('<div id="thliste" />'); th.css({ 'text-align': 'center', 'font-weight': 'bolder' }); $('#leftPane').append( TWT.WindowCollection.getAllAnchors()); $('#leftPane').append( TWT.WindowCollection.getFiltres()); // $('<div style="text-align: left;"></div>') // .append(this.getAllAnchors())) ; $('#rightPane').append(th); $('#rightPane').append(showbox); var divMain = TWT.WindowCollection .getDiv(TWT.MetaCol.groupSorted); $('#showbox').html(divMain); TWT.WindowCollection.Window.hideLoader(); } }, Injecteur: { divsnif: [], methodes: [], winTabInjected: [], init: function (id, name, callback) { if (!isDefined(this.methodes[id])) { this.methodes[id] = { attached: false, id: id, name: name, callback: callback, original: eval(name) }; }; }, addWinTabListen: function (who, callback, tab) { if (!isDefined(TWT.Injecteur.winTabInjected[who + '_' + tab])) { TWT.Injecteur.winTabInjected[who] = { who: who, tab: tab, callback: callback }; } }, startListen: function () { EventHandler .listen( 'WINDOW_OPENED', function (e) { if (isDefined(TWT.Injecteur.winTabInjected[e])) { var inj = TWT.Injecteur.winTabInjected[e]; TWT.Injecteur.detecteWin( inj.who, inj.callback, inj.tab); } }); }, detecteWin: function (who, callback, tab) { var u = wman.getById(who); if (isDefined(u)) { u.addEventListener(TWE('WINDOW_CLOSE'), function (e) { u.removeEventListener( TWE('WINDOW_TAB_CLICK'), callback(u)); u.removeEventListener( TWE('WINDOW_CLOSE'), callback); }, u, who); if (isDefined(tab)) { u .addEventListener( TWE('WINDOW_TAB_CLICK'), function (e) { if (u.currentActiveTabId == tab) { callback(u); } }, u, who); } else { callback(u); } } }, detecteWinOff: function (who) { TWT.Injecteur.winTabInjected[who] = null; }, divsniffer: function (who, callback) { if (isDefined(TWT.Injecteur.divsnif[who])) { return false; } else { $('#windows') .on( 'DOMNodeInserted', '.' + who, function (e) { try { var opendiv = e.currentTarget; if (opendiv.attributes['class'].nodeValue .indexOf(who) > -1) { var divBuy = $( 'div[class="' + who + '"]') .contents(); callback($(opendiv)); } } catch (e) { ErrorLog.log(e); } }); TWT.Injecteur.divsnif[who] = 'true'; } }, divsnifferoff: function (who) { $('#windows').off('DOMNodeInserted', '.' + who); // console.log('div sniffer off'); TWT.Injecteur.divsnif[who] = undefined; }, inject: function (id) { try { if (isDefined(this.methodes[id]) && !this.methodes[id].attached) { this.methodes[id].attached = true; return this.methodes[id].callback(); }; } catch (e) { ErrorLog.log(e, 'Erreur injection ' + id); this.restore(id); } }, restore: function (id) { try { this.methodes[id].attached = false; eval("(function ($) {" + this.methodes[id].name + '=' + this.methodes[id].original + "})($);"); return this.methodes[id].original; } catch (e) { ErrorLog.log(e, 'Erreur retauration ' + id); } }, injectedMethods: { injectItemTrader: function () { west.game.shop.item.view.prototype.injectTWTips = function ( item) { if (TWT.MetaCol.dirty) { TWT.CollectionsHandler.refresh(); } var obj = this.getModel(); var name = $.trim(obj.getName()); var divMain = "<p/>"; // itemTraderFunction.bind(this)(); item.find(".TWTSuccess").remove(); if (TWT.MetaCol.shouldBuy(name)) { var titre = TWT.MetaCol.getBuyItems( name, true); divMain = '<img class="TWTSuccess"' + 'style="' + TWT.css.styleN + '" title="' + TWT.LANG.collection.patchsell.title + titre + '" src="' + TWT.images.cup + '" />'; } return divMain; }; var modifiedFunc = west.game.shop.item.view.prototype.render .toString(); modifiedFunc = modifiedFunc .toString() .replace( 'return $item;', "$item.append(that.injectTWTips($item)); return $item;"); eval("west.game.shop.item.view.prototype.render=" + modifiedFunc); }, injectSell: function () { tw2widget["InventoryItem"].prototype.injectSell = function ( that) { if (TWT.MetaCol.dirty) { TWT.CollectionsHandler.refresh(); } var name = $.trim(that.obj.name); that.divMain.find('.TWTSuccessSell') .remove(); if (!TWT.MetaCol.isFinished(name)) { that.divMain .append('<img class="TWTSuccessSell"' + 'style="' + TWT.css.styleT + '" title="' + TWT.LANG.collection.patchsell.title + TWT.MetaCol .getBuyItems( name, true) + '"' + ' src="' + TWT.images.cup + '" />'); } if (TWT.MetaCol.dirty) { TWT.CollectionsHandler.refresh(); } return that.divMain; }; var modifiedFunc = tw2widget["InventoryItem"].prototype.getMainDiv .toString(); modifiedFunc = modifiedFunc .replace('return this.divMain;', "; this.injectSell(this); return this.divMain;"); eval("tw2widget['InventoryItem'].prototype.getMainDiv = " + modifiedFunc); }, injectMarket: function () { try { MarketWindow.injectTWTTips = function (obj) { if (TWT.MetaCol.dirty) { TWT.CollectionsHandler.refresh(); } var divMain = ''; if (TWT.MetaCol.shouldBuy($.trim(obj.name))) { divMain = '<img class="TWTSuccess" style="' + TWT.css.style + '" title="' + TWT.LANG.collection.patchsell.title + ' ' + TWT.MetaCol.getBuyItems(obj.name, false) + '"' + ' src="' + TWT.images.cup + '" />'; }; return divMain; }; var modifiedFunc = MarketWindow.getClearName //tw2widget["TraderItem"].prototype.getMainDiv .toString(); modifiedFunc = modifiedFunc.replace(/return/g, 'return this.injectTWTTips(obj)+'); eval('MarketWindow.getClearName=' + modifiedFunc); } catch (e) { ErrorLog.log(e, 'Erreur inject market'); throw (e); } }, injectFilterMarket: function () { MarketWindow.Buy.updateCategory = function ( category, data) { // searchbox var marketUpdFunc = MarketWindow.Buy.updateCategory; return function (category, data) { try { marketUpdFunc.bind(this)(category, data); if (!TWT.MetaCol.finished) { if ($( '#buyFilterIsCollect.tw2gui_checkbox_checked', MarketWindow.DOM).length > 0) { $( 'p.accordion_contentRow:not(:has(.TWTSuccess))', MarketWindow.DOM) .css('display', 'none'); } } // TWDB add if (TWT.isTWDBHere && TWT.Settings .isChecked("twdbadds.filterBuyMarket")) { if ($( '#buyFilterIsCollect2.tw2gui_checkbox_checked', MarketWindow.DOM).length > 0) { $( 'p.accordion_contentRow:not(:has(.TWDBcollector)):not(:has(.TWDBbuyTip))', MarketWindow.DOM) .css('display', 'none'); } } } catch (e) { ErrorLog.log(e, 'Erreur update category'); marketUpdFunc.bind(this)(category, data); } }; } (); }, injectBagUpdate: function () { try { Bag.updateChanges = function (changes, from) { var bagFunction = Bag.updateChanges; return function (changes, from) { bagFunction.bind(this)(changes, from); EventHandler .signal('inventory_dun_changed'); }; } (); } catch (e) { ErrorLog.log('Injection Bag updater error', e); ErrorLog.show(); } }, injectTrader: function () { tw2widget["TraderItem"].prototype.injectTWTips = function () { if (TWT.MetaCol.dirty) { TWT.CollectionsHandler.refresh(); } var name = $.trim(this.obj.name); this.divMain.find(".TWTSuccess").remove(); if (TWT.MetaCol.shouldBuy(name)) { this.divMain .append('<img class="TWTSuccess"' + 'style="' + TWT.css.styleT + '" title="' + TWT.LANG.collection.patchsell.title + TWT.MetaCol .getBuyItems( name, true) + '"' + ' src="' + TWT.images.cup + '" />'); } return this.divMain; }; var modifiedFunc = tw2widget["TraderItem"].prototype.getMainDiv .toString(); modifiedFunc = modifiedFunc .replace('return this.divMain;', "this.divMain = this.injectTWTips(); return this.divMain;"); eval("tw2widget['TraderItem'].prototype.getMainDiv =" + modifiedFunc); }, injectCraftFilterUpdate: function () { Crafting.updateResources = function () { var craftUpdFunc = Crafting.updateResources; return function () { var d = $(".TWTcraftitem"); var tbl = {}; $ .each( d, function (int, im) { var path = im.parentElement.parentElement.id; var chem = "#" + path + " .item_crafting"; if (!isDefined(tbl[path])) { tbl[path] = { 'csspath': chem, 'insert': im.id }; } }); craftUpdFunc.bind(this)(); $ .each( tbl, function (oi, obj) { $(obj.csspath) .append( TWT.Commons .addMarketBuyLink(obj.insert)); // .append( // TWT.Commons // .addMiniMapIcon(obj.insert)); }); }; } (); }, injectCraftFilterMarket: function () { Crafting.addRecipe = function (recipe) { var craftFunction = Crafting.addRecipe; return function (recipe) { craftFunction.bind(this)(recipe); var recipeObj = ItemManager .get(recipe.item_id); $ .each( recipeObj.resources, function (ind, obj) { if (TWT.Settings .isChecked("craft.filterMarket")) { $( "#resources_" + recipeObj.item_id + "_" + obj.item + " .item") .append( TWT.Commons .addMarketBuyLink(obj.item)); } // if (TWT.Settings // .isChecked("craft.filterMiniMap")) { // $( // "#resources_" // + recipeObj.item_id // + "_" // + obj.item // + " .item") // .append( // TWT.Commons // .addMiniMapIcon(obj.item)); // // } // }); }; } (); } } }, CraftHandler: { initListener: function () { // EventHandler // .listen( // 'craft.filterMiniMap', // function() { // // if (TWT.Settings // .isChecked('craft.filterMiniMap')) { // // TWT.CraftHandler.init(); // TWT.Injecteur // .inject('craft.filterMarket'); // TWT.Injecteur // .inject('craft.filterUpdate'); // // } else { // if (!TWT.Settings // .isChecked('craft.filterMarket')) { // Crafting.addRecipe = TWT.Injecteur // .restore('craft.filterMarket'); // Crafting.updateResources = TWT.Injecteur // .restore('craft.filterUpdate'); // // } // } // }); EventHandler .listen( 'craft.filterMarket', function () { if (TWT.Settings .isChecked('craft.filterMarket')) { TWT.CraftHandler.init(); TWT.Injecteur .inject('craft.filterMarket'); TWT.Injecteur .inject('craft.filterUpdate'); } else { // if (!TWT.Settings // .isChecked('craft.filterMiniMap')) { Crafting.addRecipe = TWT.Injecteur .restore('craft.filterMarket'); Crafting.updateResources = TWT.Injecteur .restore('craft.filterUpdate'); // } } }); }, init: function () { TWT.Injecteur .init( 'craft.filterMarket', 'Crafting.addRecipe', TWT.Injecteur.injectedMethods.injectCraftFilterMarket); TWT.Injecteur .init( 'craft.filterUpdate', 'Crafting.updateResources', TWT.Injecteur.injectedMethods.injectCraftFilterUpdate); }, inject: function () { try { if (TWT.Settings .isChecked('craft.filterMarket') // || TWT.Settings // .isChecked('craft.filterMiniMap') ) { TWT.Injecteur.inject('craft.filterMarket'); TWT.Injecteur.inject('craft.filterUpdate'); } return true; } catch (e) { ErrorLog .log( "Erreur Injection des meacute;thodes craft", e); this.erreur = e; } } }, Market: { inject: function () { try { if (TWT.Settings .isChecked('collection.filterMarket') || TWT.Settings .isChecked('twdbadds.filterBuyMarket')) { TWT.Injecteur .addWinTabListen( 'marketplace', TWT.Market.addCheckBoxMarket, 'buy'); TWT.Injecteur .inject('collection.filterMarket'); } return true; } catch (e) { ErrorLog.log( "Erreur Injection des meacute;thodes ", e); this.erreur = e; } }, initListener: function () { EventHandler .listen( 'collection.filterMarket', function () { if (TWT.Settings .isChecked('collection.filterMarket') || TWT.Settings .isChecked('twdbadds.filterBuyMarket')) { TWT.Injecteur .addWinTabListen( 'marketplace', TWT.Market.addCheckBoxMarket, 'buy'); // TWT.Injecteur.divsniffer('marketplace-buy', // TWT.Market.addCheckBoxMarket); TWT.Injecteur .inject('collection.filterMarket'); } else { MarketWindow.Buy.updateCategory = TWT.Injecteur .restore('collection.filterMarket'); // ' // TWT.Injecteur.divsnifferoff('marketplace-buy');' // TWT.Injecteur.detecteWinOff('marketplace'); } }); EventHandler .listen( 'twdbadds.filterBuyMarket', function () { if (TWT.Settings .isChecked('collection.filterMarket') || TWT.Settings .isChecked('twdbadds.filterBuyMarket')) { TWT.Injecteur .addWinTabListen( 'marketplace', TWT.Market.addCheckBoxMarket, 'buy'); // TWT.Injecteur.divsniffer('marketplace-buy', // TWT.Market.addCheckBoxMarket); TWT.Injecteur .inject('collection.filterMarket'); } else { MarketWindow.Buy.updateCategory = TWT.Injecteur .restore('collection.filterMarket'); // TWT.Injecteur.divsnifferoff('marketplace-buy'); } }); }, init: function () { TWT.Injecteur .init( 'collection.filterMarket', 'MarketWindow.Buy.updateCategory', TWT.Injecteur.injectedMethods.injectFilterMarket); }, addCheckBoxMarket: function (div) { if ($('#buyFilterIsCollect').length == 0) { if ((!TWT.MetaCol.finished) && TWT.Settings .isChecked("collection.filterMarket")) { $('.searchbox').css('margin-top', '-5px'); TWT.Market.insertedCB = new west.gui.Checkbox( '<img src="' + TWT.images.cup + '" /> ' + TWT.LANG.collection.collectionFilterLabel, false, function () { if (this.isSelected()) { if (isDefined(TWT.Market.insertedCB2)) TWT.Market.insertedCB2 .setSelected(false); $( 'p.accordion_contentRow:not(:has(.TWTSuccess))', MarketWindow.DOM) .css('display', 'none'); } else { $( 'p.accordion_contentRow:not(:has(.TWTSuccess))', MarketWindow.DOM) .css('display', ''); } }); TWT.Market.insertedCB.setSelected(false); TWT.Market.insertedCB .setId('buyFilterIsCollect'); TWT.Market.insertedCB .setTooltip(TWT.LANG.collection.collectionFilterTip); $('.searchbox').append( TWT.Market.insertedCB.getMainDiv()); } } if (TWT.isTWDBHere && TWT.Settings .isChecked("twdbadds.filterBuyMarket")) { // TWDB // add if ($('#buyFilterIsCollect2').length == 0) { $('.searchbox').css('margin-bottom', '5px'); TWT.Market.insertedCB2 = new west.gui.Checkbox( '<img src="data:image/png;base64,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"' + ' style="width:18px;height:18px"/>' + TWT.LANG.twdbadds.buyFilterLabel, false, function () { if (this.isSelected()) { if (isDefined(TWT.Market.insertedCB)) TWT.Market.insertedCB .setSelected(false); $( 'p.accordion_contentRow:not(:has(.TWDBcollector)):not(:has(.TWDBbuyTip))', MarketWindow.DOM) .css('display', 'none'); } else { $( 'p.accordion_contentRow:not(:has(.TWDBcollector)):not(:has(.TWDBbuyTip))', MarketWindow.DOM) .css('display', ''); } }); TWT.Market.insertedCB2.setSelected(false); TWT.Market.insertedCB2 .setId('buyFilterIsCollect2'); TWT.Market.insertedCB2 .setTooltip(TWT.LANG.twdbadds.buyFilterTip); $('.searchbox') .append( TWT.Market.insertedCB2 .getMainDiv()); } } $('.searchbox').css('margin-bottom', '10px'); } }, CollectionsHandler: { interval: 0, erreur: false, ready: false, saveFunction: {}, attachFilter: function () { // this.detachFilter(); TWT.CollectionsHandler.init(); }, callRefresh: function (e) { TWT.MetaCol.dirty = true; window.setTimeout(function () { TWT.CollectionsHandler.refresh(); }, 500); }, hasOneChecked: function () { var boolC = TWT.Settings .isChecked('collection.filterMarket') || TWT.Settings .isChecked('collection.patchtrader') || TWT.Settings .isChecked('collection.patchsell') || TWT.Settings .isChecked('collection.patchmarket') || TWT.Settings .isChecked('collection.showmiss') || TWT.Settings .isChecked('collection.listNeeded'); return boolC; }, initListener: function () { try { EventHandler .listen( 'collection.bagupdate', function () { if (TWT.CollectionsHandler .hasOneChecked()) { TWT.Injecteur .init( 'collection.patchtbagupdate', 'Bag.updateChanges', TWT.Injecteur.injectedMethods.injectBagUpdate); TWT.Injecteur .inject('collection.patchtbagupdate'); } else { Bag.updateChanges = TWT.Injecteur .restore('collection.patchtbagupdate'); EventHandler .unlisten( 'inventory_dun_changed', TWT.CollectionsHandler.callRefresh); } }); EventHandler .listen( 'collection.gereNewItems', function () { TWT.MetaCol.ready = false; TWT.MetaCol.init(); this.interval = setInterval( function () { if (TWT.MetaCol.ready) clearInterval(this.interval); }, 200); }); EventHandler .listen( 'collection.patchtrader', function () { if (TWT.Settings .isChecked('collection.patchtrader')) { if (!TWT.MetaCol.ready) TWT.MetaCol.init(); TWT.Injecteur .inject('collection.patchitemtrader'); TWT.Injecteur .inject('collection.patchtrader'); } else { TWT.Injecteur .restore('collection.patchitemtrader'); TWT.Injecteur .restore('collection.patchtrader'); } }); EventHandler .listen( 'collection.patchsell', function () { if (TWT.Settings .isChecked('collection.patchsell')) { if (!TWT.MetaCol.ready) TWT.MetaCol.init(); document.styleSheets[0] .deleteRule(999); TWT.Injecteur .inject('collection.patchsell'); } else { TWT.Injecteur .restore('collection.patchsell'); $('.TWTSuccessSell') .css('display', 'none'); document.styleSheets[0] .insertRule( ".TWTSuccessSell { display:none; }", 999); } }); EventHandler .listen( 'collection.patchmarket', function () { if (TWT.Settings .isChecked('collection.patchmarket')) { if (!TWT.MetaCol.ready) TWT.MetaCol.init(); TWT.Injecteur .inject('collection.patchmarket'); } else { TWT.Injecteur .restore('collection.patchmarket'); } }); } catch (e) { ErrorLog.log( 'Erreur listener CollectionHandler', e); throw e; } }, init: function () { EventHandler.listen('inventory_dun_changed', TWT.CollectionsHandler.callRefresh); // if (ItemManager.isLoaded()) { // TWT.CollectionsHandler.initInject(); // // }else{ // EventHandler.listen('itemmanager_loaded', // function(){ // // TWT.CollectionsHandler.initInject(); // TWT.CollectionsHandler.inject(); // // }); // // } // } // , // initInject : function(){ TWT.Injecteur.init('collection.patchmarket', 'MarketWindow.getClearName', TWT.Injecteur.injectedMethods.injectMarket); TWT.Injecteur .init( 'collection.patchsell', 'tw2widget["InventoryItem"].prototype.getMainDiv', TWT.Injecteur.injectedMethods.injectSell); TWT.Injecteur .init( 'collection.patchtbagupdate', 'Bag.updateChanges', TWT.Injecteur.injectedMethods.injectBagUpdate); TWT.Injecteur.inject('collection.patchtbagupdate'); TWT.Injecteur .init( 'collection.patchitemtrader', 'west.game.shop.item.view.prototype.render', TWT.Injecteur.injectedMethods.injectItemTrader); TWT.Injecteur .init( 'collection.patchtrader', 'tw2widget["TraderItem"].prototype.getMainDiv', TWT.Injecteur.injectedMethods.injectTrader); // } }, refresh: function () { var items = Bag.items_by_id; $ .each( items, function (ind, val) { $ .each( val, function (ind2, val2) { if (val2) { var name = $ .trim(val2.name); var item = TWT.MetaCol.inProgress[name]; if (isDefined(item)) { item.shouldBuy = false; var manquants = TWT.MetaCol.group[item.group]; if (isDefined(manquants)) { TWT.MetaCol.group[item.group] = TWT.MetaCol .remove( manquants, name); if (TWT.MetaCol.group[item.group].length == 0) { TWT.MetaCol.group[item.group][0] = true; } } } } }); }); TWT.MetaCol.dirty = false; }, inject: function () { try { TWT.MetaCol.init(); if (!TWT.MetaCol.finished) { if (TWT.MetaCol.ready) { if (TWT.Settings .isChecked('collection.patchtrader')) { TWT.Injecteur .inject('collection.patchtrader'); TWT.Injecteur .inject('collection.patchitemtrader'); } if (TWT.Settings .isChecked('collection.patchsell')) { TWT.Injecteur .inject('collection.patchsell'); } if (TWT.Settings .isChecked('collection.patchmarket')) { TWT.Injecteur .inject('collection.patchmarket'); } } } return true; } catch (e) { ErrorLog .log( "Erreur Injection des meacute;thodes collections ", e); this.erreur = e; console .log("TWT : Erreur injection collections"); console.log(e); } } }, Inventaire: { create: function () { TWT.Inventaire.attach(); }, attach: function () { EventHandler.listen("inventory_ready", TWT.Inventaire.addCheckBoxBag, "dblbag"); }, detach: function () { EventHandler.unlisten("inventory_ready", TWT.Inventaire.addCheckBoxBag, "dblbag"); $('#bagFilterIsCollect', Inventory.DOM).remove(); }, searchDoublons: function (filtre) { var searchTxt = ""; var searchVal = $('#inventory_search', Inventory.DOM).val(); if (searchVal.lenght == 0 || Inventory.category != 'set') { searchVal = ".*"; } else { searchTxt = (searchVal.lenght == 0) ? "" : " (" + searchVal + ")"; } var res = Bag.search(searchVal); $('#inventory_search', Inventory.DOM).val(""); var doubles = []; var sell = 0; $ .each( res, function (ind1, item) { if (item.obj.type != 'yield' && ($ .inArray( item .getType(), Inventory .getCategoryTypes(Inventory.category)) > -1 || Inventory.category == 'set' || Inventory.category == 'new')) { var count = item.getCount(); // Si porté -> doublon donc // on ajoute 1 item var weared = Wear .carries(item.obj.item_base_id); if (weared) { count += 1; } if (count > 1) { switch (filtre) { case 'upgradeable': if (count < 3 || !item.obj.upgradeable) { item = null; } break; case 'nosets': if (item.obj.set != null) { item = null; } break; case 'sellable': if (!item.obj.sellable) { item = null; } break; case 'auctionable': if (!item.obj.auctionable) { item = null; } break; default: break; } if (isDefined(item)) { doubles.push(item); sell += (item .getSellPrice()) * (count - 1); } } } else {} }); var lastCat = Inventory.category; Inventory.showSearchResult(doubles || []); if (TWT.Settings.isChecked('inventory.sum')) { $('#sumsearch', Inventory.DOM).remove(); $('#bagFilterIsCollect', Inventory.DOM) .after( "<div title='" + sell + TWT.LANG.Doublons.sellGain + searchTxt + "' id='sumsearch' style='text-align: center; position: inherit; z-index: 4;" + "font-weight: bold; color: black; font-size: 11px; width:" + "100%;top:362px; '>" + sell + TWT.LANG.Doublons.sellGain + "</div>"); } }, searchSpeciales: function (what) { $('#inventory_search', Inventory.DOM).val(what); var res = Bag.search(what); Inventory.showSearchResult(res || []); return res; }, getDetSearchBox: function () { if (isDefined(west.storage.ItemSetManager)) { var selSets = new west.gui.Selectbox(); selSets.setWidth(200); $(selSets.elContent).css({ "max-height": "270px", "width": "250px", "overflow-y": 'auto' }); TWT.selAdded = []; selSets.addItem('all', TWT.LANG.collection.allOpt); selSets.addItem('current', TWT.LANG.Doublons.current); selSets.addItem('upgradeable', TWT.LANG.Doublons.upgradeable); selSets.addItem('nosets', TWT.LANG.Doublons.noset); selSets.addItem('sellable', TWT.LANG.Doublons.sellable); selSets.addItem('auctionable', TWT.LANG.Doublons.auctionable); selSets.addListener(function (e) { switch (e) { case 'all': $('#inventory_search', Inventory.DOM) .val(""); break; default: break; } TWT.Inventaire.searchDoublons(e); return true; }); return selSets; } return selSets; }, getSetNamesBox: function (setsCache) { if (isDefined(west.storage.ItemSetManager)) { var selSets = new west.gui.Selectbox(); selSets.setWidth(200); $(selSets.elContent).css({ "max-height": "270px", "width": "250px", "overflow-y": 'auto' }); TWT.selAdded = []; selSets.addItem('setitems', TWT.LANG.collection.allOpt); $ .each( setsCache, function (ind2, item) { var itemsSet = west.storage.ItemSetManager .get(item.obj.set); if (!isDefined(TWT.selAdded[itemsSet.name])) { TWT.selAdded[itemsSet.name] = true; selSets.addItem( itemsSet.name, itemsSet.name); } }); selSets.addListener(function (e) { TWT.Inventaire.searchSpeciales(e); return true; }); return selSets; } return selSets; }, addCheckBoxBag: function (div) { if ($('#bagFilterIsCollect', Inventory.DOM).length == 0) { var setsCache = Bag.search('setitems'); setsCache.sort(function (a, b) { var x = west.storage.ItemSetManager .get(a.obj.set).name; var y = west.storage.ItemSetManager .get(b.obj.set).name; if (typeof x === 'string' && typeof x === 'string') { return x.localeCompare(y); } return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }); var selBox = TWT.Inventaire .getSetNamesBox(setsCache); var spanD = $('<div id="bagFilterIsCollect" ' + 'style="display: flex; position: inherit;"/>'); if (TWT.Settings .isChecked('inventory.doublons')) { var insertedCB = $( "<span title='" + TWT.LANG.Doublons.tip + "' id='inventory_doublons'" + '" style="cursor: pointer; position: relative; margin-right: 4px;" />') .append( "<img class='tw2gui-iconset tw2gui-icon-dollar' " + " src='./images/tw2gui/pixel-vfl3z5WfW.gif' alt='' title=''>"); insertedCB.click(function (e) { $('#sumsearch').remove(); TWT.Inventaire.getDetSearchBox() .show(e); }); // insertedCB.click(TWT.Inventaire.searchDoublons); spanD.append(insertedCB); } if (TWT.Settings .isChecked('inventory.useables')) { var insertedCB2 = $('<span title="' + TWT.LANG.Doublons.tipuse + '" id="inventory_useables"' + '" style="cursor: pointer; position: relative; margin-right: 4px;">' + "<img class='tw2gui-iconset tw2gui-icon-consumable' " + " src='./images/tw2gui/pixel-vfl3z5WfW.gif' alt='' title=''></span>"); insertedCB2.click(function () { $('#sumsearch').remove(); TWT.Inventaire .searchSpeciales('useable'); }); spanD.append(insertedCB2); } if (TWT.Settings.isChecked('inventory.recipe')) { var insertedCB3 = $('<span title="' + TWT.LANG.Doublons.tiprecipe + '" id="inventory_recipe"' + '" style="position: relative;background-color: transparent; background-attachment: scroll; background-clip: border-box; cursor: pointer; bottom: inherit; " >' + '<img src="./images/items/recipe/recipe_smith.png" width="20px" height="20px" /></span>'); insertedCB3.click(function () { $('#sumsearch').remove(); TWT.Inventaire .searchSpeciales('recipe'); }); spanD.append(insertedCB3); } if (TWT.Settings.isChecked('inventory.sets')) { var insertedCB4 = $('<span title="' + TWT.LANG.Doublons.tipsets + '" id="inventory_sets"' + '" style="cursor: pointer; position: relative; margin-right: 4px;" >' + "<img style='cursor: pointer;' class='tw2gui-iconset tw2gui-icon-shirt' " + " src='./images/tw2gui/pixel-vfl3z5WfW.gif' alt='' title=''></span>"); insertedCB4.click(function (e) { $('#sumsearch').remove(); selBox.show(e); }); spanD.append(insertedCB4); } $('.filters', Inventory.DOM).before(spanD); } } }, Logout: { initListener: function () { EventHandler .listen( 'miscellaneous.logout', function () { $('#TWTOOL_Logout').remove(); if (TWT.Settings .isChecked('miscellaneous.logout')) { TWT.Logout.create(); }; }); }, create: function () { var a = $('<div></div>').attr({ 'class': 'menulink', 'title': TWT.LANG.Logout.title }).css({ 'background-image': 'url(' + TWT.images.logout + ')' }).mouseenter( function () { $(this).css("background-position", "-25px 0px"); }).mouseleave(function () { $(this).css("background-position", "0px 0px"); }).click(function () { TWT.Logout.logout(); }); var b = $('<div></div>').attr({ 'class': 'menucontainer_bottom' }); $('<div></div>').attr({ 'class': 'ui_menucontainer', 'id': 'TWTOOL_Logout' }).append(a).append(b).appendTo('#ui_menubar'); }, logout: function () { // Player.logout(); $(window.location).attr( 'href', 'game.php?window=logout&action=logout&h=' + Player.h); } }, BankFees: { attach: function () { TWT.Injecteur.divsniffer('wood-footer', TWT.BankFees.init); // TWT.Injecteur.addWinTabListen(/^bank-\d+/,TWT.BankFees.init,'balance'); }, detach: function () { TWT.Injecteur.divsnifferoff('wood-footer'); // TWT.Injecteur.detecteWinOff(/^bank-\d+/); }, initListener: function () { EventHandler .listen( 'miscellaneous.showFees', function () { if (TWT.Settings .isChecked('miscellaneous.showFees')) { TWT.BankFees.attach(); } else { TWT.BankFees.detach(); } }); }, calcFrais: function (montant, taux) { tauxPourc = Number(taux.replace(/% ?/g, "")); var fraisArrondi = Math .ceil((montant * tauxPourc) / 100); var txtFrais = TWT.LANG.fees.tipText.replace('%1', tauxPourc).replace('%2', fraisArrondi); // return txtFrais; }, init: function (e) { var depotLink = $('.wood-footer:first .deposit'); if (depotLink && (!depotLink.attr('id'))) { var frais = $( 'div.town_data_value div.bank-fee') .text(); var numFrais = 1 + 0.01 * Number(frais.replace( /% ?/g, "")); depotLink.attr('id', 'depo_changed'); var balance = $('.wood-footer:first #tb_balance_input_' + BankWindow.townid); var that = this; balance.mouseover(function () { var fraisArrondi = Math .ceil((balance.val() - balance .val() / numFrais)); var txtFrais = TWT.BankFees.calcFrais( balance.val(), frais); / / balance.attr('title', txtFrais); }); var amount = $('#amount'); if (amount) { amount.mouseover(function () { var txtFrais = TWT.BankFees.calcFrais( amount.val(), BankWindow.Transfer.fee .toString()); amount.attr('title', txtFrais); }); } } } }, AllReportsDelete: { addStyle: function () { var css = ".window_AllReportsDelete .window_inside { width:540px; position:absolute; left:5px; top:2px; }" + ".window_AllReportsDelete .cell_what { width:170px; } " + ".window_AllReportsDelete .tbody .cell_what { padding-left:6px; } .window_AllReportsDelete .tbody .row { left:0px; }" + ".window_AllReportsDelete .cell_progress { text-align:center; width:330px; } " + "div#ui_menubar { z-index: 100000;}"; $( '<style id="TWTOOL_CSS" type="text/css" >' + css + '</style>') .appendTo('head'); }, saveFunction: MessagesWindow.Report._initContent, attachedFunction: '', attach: function () { MessagesWindow.Report._initContent = function (data) { var msgFunc = MessagesWindow.Report._initContent; return function (data) { msgFunc.bind(this)(data); $('.actionprompt', MessagesWindow.Report.DOM) .append( "<a href='javascript:TWT.AllReportsDelete.init();'>" + TWT.LANG.AllReportsDelete.button + "</a>"); }; } (); TWT.AllReportsDelete.attachedFunction = MessagesWindow.Report._initContent .toString(); EventHandler.listen('report.dom.created', TWT.AllReportsDelete.addButton); }, detach: function () { MessagesWindow.Report._initContent = TWT.AllReportsDelete.saveFunction; EventHandler.unlisten('report.dom.created', TWT.AllReportsDelete.addButton); }, initListener: function () { EventHandler .listen( 'miscellaneous.deleteAllReports', function () { if (TWT.Settings .isChecked('miscellaneous.deleteAllReports')) { TWT.AllReportsDelete .attach(); } else { TWT.AllReportsDelete .detach(); } }); }, init: function () { new west.gui.Dialog( TWT.LANG.AllReportsDelete.userConfirm, TWT.LANG.AllReportsDelete.confirmText, "ok") .setModal(true, false, { bg: "../images/curtain_bg.png", opacity: 0.4 }) .addButton( TWT.LANG.AllReportsDelete.deleteYes, function () { TWT.AllReportsDelete.status_close = true; $('div.tw2gui_dialog_text') .html( '<p>Suppression en cours.....<br /></p><span id="sppage" />'); $('div.tw2gui_dialog_actions') .css({ 'display': 'none' }); TWT.AllReportsDelete .delete_all(); }) .addButton( TWT.LANG.AllReportsDelete.deleteNo, function () { TWT.AllReportsDelete.status_close = false; }).show(); }, reports_id: [], progress_page: 1, delete_all: function () { var that = this; for (var i = 0; i < MessagesWindow.Report.pageCount; i++) { $('#sppage') .html( '<p>Page ' + that.progress_page + '/' + MessagesWindow.Report.pageCount + '</p>'); $ .ajax({ url: 'game.php?window=reports&action=get_reports&h=' + Player.h, type: 'POST', data: { 'folder': MessagesWindow.Report.currentFolder, 'page': that.progress_page }, dataType: 'json', async: false, success: function (data_return) { for (var j = 0; j < data_return['reports'].length; j++) { that.reports_id .push(data_return['reports'][j]['report_id']); } that.progress_page += 1; } }); } var that = this; $ .ajax({ url: 'game.php?window=reports&action=delete_reports&h=' + Player.h, type: 'POST', data: { 'deleted': 'false', 'reports': TWT.AllReportsDelete.reports_id .join(", ") }, dataType: 'json', async: false, success: function (data_return) { if (data_return['error']) that.status_close = false; } }); MessagesWindow.showTab('report'); } }, getDunMp: function () { if (Game.worldName == 'Monde 1' || Game.worldName == 'Monde 3' || Game.worldName == 'Alamogordo' || Game.worldName == 'Death Valley') { return "<div style='text-align:right;padding-right: 5px; padding-top: 15px;'><a href=\"javascript:MessagesWindow.open(\'telegram\', {insert_to: \'Dun\'})\">by Dun</a></div>"; } else { if (Game.worldName == 'World 1') { return "<div style='text-align:right;padding-right: 5px; padding-top: 15px;'><a href=\"javascript:MessagesWindow.open(\'telegram\', {insert_to: \'Duncol\'})\">by Dun</a></div>"; } return ""; }; }, api: function () { var TWApi = TheWestApi .register('TW_Collections', 'TW Collections', TWT.info.min_gameversion, TWT.info.max_gameversion, 'Dun - v' + TWT.info.version, 'https://greasyfork.org/scripts/1670-tw-collections'); var set_button = new west.gui.Button( TWT.LANG.Options.tab.setting, function () { TWT.Options.open('setting'); }, this, this, "Open the Settings page"); var more_button = new west.gui.Button( TWT.LANG.Options.checkbox_text.miscellaneous.options.lang, function () { TWT.Options.open('translate'); }, this, this, "Open the Translation tips page"); TWApi .setGui($( "<div id='twtApiContent' style=' font-family: comic sans ms;font-size: 12pt;padding-top: 10px;text-align: right;'>" + TWT.LANG.description + "</div>").append( set_button.getMainDiv()).append( more_button.getMainDiv()).after( TWT.getDunMp())); } }; ScriptUpdater = { id: null, // : TWT.info.idscript, version: null, // : TWT.info.version, scriptId: null, scriptCurrentVersion: null, scriptUpdUrl: "http://pastebin.com/raw.php?i=W4fYvHcM", // "https://greasyfork.org/de/scripts/1669/code.user.js", scriptCallbackFunction: null, scriptStorage: null, initialize: function (scriptId, scriptCurrentVersion, scriptCallbackFunction, scriptUseNotice, scriptForceNotice) { ScriptUpdater.scriptId = scriptId; ScriptUpdater.scriptCurrentVersion = scriptCurrentVersion; if (ScriptUpdater.scriptStorage == null) { ScriptUpdater.scriptStorage = new Storage("local", "ScriptUpdater." + scriptId); } }, setValue: function (key, value) { if (ScriptUpdater.scriptStorage == null) { ScriptUpdater.scriptStorage = new Storage("local", "ScriptUpdater." + scriptId); } ScriptUpdater.scriptStorage.setItem(key, value); }, getValue: function (key, defaultValue) { if (ScriptUpdater.scriptStorage != null) { return ScriptUpdater.scriptStorage.getItem(key, defaultValue); } else { return defaultValue; } }, checkLanguages: function () { // Update languages try { var strLang = ""; $ .each( TWT.languages, function (ind, language) { if (isDefined(language.script)) { if (TWT .isGreasyLang(language)) { if (language.version < ScriptUpdater.scrnv[language.script]) { strLang += "<br><a href='https://greasyfork.org/scripts/" + language.script + '/code.user.js\'>' + language.name + "</a>"; } } } }); if (strLang.length > 0) { ScriptUpdater.scrnv.isAJ = false; var parent = new west.gui.Dialog( TWT.LANG.Options.update.title, "<div><br>" + TWT.LANG.Options.update.updlangmaj + "<br><center>" + strLang + "</center></div>") .setIcon( west.gui.Dialog.SYS_INFORMATION) .setModal( true, false, { bg: "http://www.the-west.fr/images/curtain_bg.png", opacity: 0.7 }) .addButton( 'TW Collection page', function () { parent.hide(); window .open( "https://greasyfork.org/scripts/" + ScriptUpdater.scriptId, '_blanck'); }).addButton('Close'); parent.show(); } else { // ScriptUpdater.scrnv.isAJ=true; } } catch (e) { new UserMessage(TWT.LANG.Options.update.upderror, UserMessage.TYPE_ERROR).show(); ErrorLog.log('Update error', e); } }, checkRemoteScript: function () { // Update try { if (TWT.DEBUG) { ScriptUpdater.scrnv = { 7258: '1.3.9', // twt 7260: '1.3.5', // cz 3405: '1.0.8', // es 1672: '1.0.8', // de 1675: '1.0.8', // it 7261: '1.3.5', // hu 7259: '1.3.5', // sk 1674: '1.0.8', // pl 7312: '1.0.2', // br 7271: '1.3.5', // ru news: '<h4 style="margin-bottom:20px;">News : </h4>' + "Debug d'affichage des mises a jour<BR><BR>" }; } var gocheck = function () { ScriptUpdater.scrnv.isAJ = false; if (ScriptUpdater.scriptCurrentVersion < ScriptUpdater.scrnv[ScriptUpdater.scriptId]) { // ScriptUpdater.scrnv.isAJ=false; var strNew = ScriptUpdater.scrnv['news'] || ''; var parent = new west.gui.Dialog( TWT.LANG.Options.update.title, "<div style='" + ((strNew.length > 0) ? "width:650px;height:250px;" : "") + "font-size:16px;text-align:justify;'><BR>" + TWT.LANG.Options.update.updscript // + // ScriptUpdater.scrnv[ScriptUpdater.scriptId] + "<div id='boxnews' style='margin-top:20px;font-size:14px;font-style: italic;'>" + strNew + "</div></div>") .setIcon( west.gui.Dialog.SYS_QUESTION) .setModal( true, false, { bg: "http://www.the-west.fr/images/curtain_bg.png", opacity: 0.7 }) .addButton( 'yes', function () { parent.hide(); window .open( "https://greasyfork.org/scripts/1670-tw-collections/code/TW-Collections.user.js", '_self'); }) .addButton('no', function () { parent.hide(); }) .addButton( 'Script page', function () { parent.hide(); window .open( "https://greasyfork.org/scripts/" + ScriptUpdater.scriptId, '_blanck'); }); parent.show(); } else { ScriptUpdater.scrnv.isAJ = true; } ScriptUpdater.checkLanguages(); var date = new Date(); ScriptUpdater.setValue("lastCheck", parseInt(date.getTime())); if (ScriptUpdater.scrnv.isAJ) { EventHandler.signal("scriptmaj.ok"); } }; if (TWT.DEBUG) { gocheck(); } else { ScriptUpdater.scrnv = []; $ .getScript(ScriptUpdater.scriptUpdUrl, gocheck); } } catch (e) { new UserMessage(TWT.LANG.Options.update.upderror, UserMessage.TYPE_ERROR).show(); ErrorLog.log('Update error', e); } }, getLastCheck: function () { return ScriptUpdater.getValue("lastCheck", 0); }, getInterval: function () { var interval = ScriptUpdater.getValue("interval", 0); return (typeof(interval) == "undefined" || !interval .toString().match(/^\d+$/)) ? 0 : parseInt(interval.toString()); }, setInterval: function (interval) { ScriptUpdater.setValue("interval", parseInt(interval)); }, check: function (scriptId, scriptVersion, scriptCallbackFunction) { ScriptUpdater.initialize(scriptId, scriptVersion, scriptCallbackFunction, true, false); var date = new Date(); if (ScriptUpdater.getInterval() > 1) { if ((date.getTime() - ScriptUpdater.getLastCheck()) > ScriptUpdater .getInterval()) { ScriptUpdater.checkRemoteScript(); } } }, forceCheck: function (scriptId, scriptVersion, scriptCallbackFunction) { ScriptUpdater.initialize(scriptId, scriptVersion, scriptCallbackFunction, true, false); ScriptUpdater.checkRemoteScript(); } }; /*************************************************************** * DOM Storage Wrapper Class * * Public members: ctor({"session"|"local"}[, <namespace>]) * setItem(<key>, <value>) getItem(<key>, <default value>) * removeItem(<key>) keys() **************************************************************/ function Storage(type, namespace) { var object = this; if (typeof(type) != "string") type = "session"; switch (type) { case "local": { object.storage = localStorage; } break; case "session": { object.storage = sessionStorage; } break; default: { object.storage = sessionStorage; } break; } if (!namespace || (typeof(namespace) != "string" && typeof(namespace) != "number")) namespace = "ScriptStorage"; object.namespace = [namespace, "."].join(""); object.setItem = function (key, value) { try { object.storage.setItem(escape([object.namespace, key].join("")), JSON.stringify(value)); } catch (e) {} }; object.getItem = function (key, defaultValue) { try { var value = object.storage.getItem(escape([ object.namespace, key].join(""))); if (value) return eval(value); else return defaultValue; } catch (e) { return defaultValue; } }; object.removeItem = function (key) { try { object.storage .removeItem(escape(collection.craftfilterMarket[ object.namespace, key].join(""))); } catch (e) {} }; object.keys = function () { var array = []; var indDun = 0; do { try { var key = unescape(object.storage.key(indDun++)); if (key.indexOf(object.namespace) == 0 && object.storage.getItem(key)) array.push(key .slice(object.namespace.length)); } catch (e) { break; } } while (true); return array; }; }; TWT.init(); } });