TW-Collections

TW-Collections - see history

目前為 2018-01-28 提交的版本,檢視 最新版本

// ==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://gf.qytechs.cn/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://gf.qytechs.cn/cs/scripts/7260",
							texte : "Czech - čeština",
							author : "Dr.Keeper"
						},
						es : {
							link : "https://gf.qytechs.cn/es/scripts/7313",
							texte : "Spanish - Español",
							author : "pepe100"
						},
						de : {
							link : "https://gf.qytechs.cn/de/scripts/1672",
							texte : "German - Deutsch",
							author : "Hanya"
						},
						it : {
							link : "https://gf.qytechs.cn/it/scripts/1675",
							texte : "Italian - Italiano",
							author : "tw81"
						},
						hu : {
							link : "https://gf.qytechs.cn/scripts/7261",
							texte : "Hungarian - Magyar",
							author : "Zoltan80"
						},
						sl : {
							link : "https://gf.qytechs.cn/scripts/7259",
							texte : "Slovak - Slovenčina",
							author : "Surge"
						},
						pl : {
							link : "https://gf.qytechs.cn/pl/scripts/1674",
							texte : "Polish - Polski",
							author : "Dun from Darius II mod"
						},
						pt : {
							link : "https://gf.qytechs.cn/pt-BR/scripts/7312",
							texte : "Portuguese - Português",
							author : "VSaantiago"
						},
						ru : {
							link : "https://gf.qytechs.cn/ru/scripts/7271",
							texte : "Russian - Pу́сский",
							author : "Anch665"
						},
						ro : {
							link : "https://gf.qytechs.cn/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 &agrave; sa ville',
											goToDaily1 : 'Aller &agrave; la ville abandonn&eacute;e',
											goToDaily2 : 'Aller au village de Waupee',
											ownSaloon : 'Ouvrir votre saloon',
											openMarket : 'Ouvrir le march&eacute;',
											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&eacute;cessaires aux collections chez les marchands',
											patchmarket : 'Signalement des items n&eacute;cessaires aux collections dans le march&eacute;',
											filterMarket : 'Filtre dans le march&eacute; 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&eacute;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&eacute; 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&eacute;s',
								list : {
									openOptions : 'Param&egrave;tres de l&acute;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&eacute;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&eacute;ussi',
									fail : 'Erreur',
									error : 'Erreur'
								}
							},
							fees : {
								tipText : 'Frais &aacute; %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&egrave;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&eacute;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&eacute;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://gf.qytechs.cn/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(
											"&nbsp;"
													+ 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(
																					"&nbsp;")
																			.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(
																						"&nbsp;&nbsp;&nbsp;")
																				.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 = $('&nbsp;<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 = $('&nbsp;<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(
																						'&nbsp;')
																				.append(
																						sp)
																				.append(
																						'&nbsp;')
																				.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,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAC/tJREFUeNp0WAlUFFcWvVXdTTc0NIuogLiAgsYtJm4kGk3UqMkYM3GiUXN0TDJGj6NRo7gko+JuTGLiEhN3x2VwGz1x1MQxQeNKiGCjAm4IAooI0ghN02vVvP+7quk2mTqnqKLr1//vv3vfe/eV8GKfvmgeHY7pk8bC6XRDEABRFMEOj0fiV1EUINNVliR+L7BBfocke5+x3/XBRpjzC6MijdrquJhm3uc0QJYbT7aISGdQkA6bdh5Cwa27SE1NhTYrKwvduyShT/f2qLPWQ6MRodVqwFZ3ujzMBPpNQxNKcHs8CNJq+RhmHP8jyHC7ZXru4b+bYhJ6lRYVr/ktJ/u1d5fMqrPZHXxT7GSGqBthl5BgA1asfgCz2YyKigqIQUFBfDEPLcZ2wE6Ph071XmKLecgQ5TlN6FYmV99hV5fLBV14tFCVlbs66UxGn7KHjyf9mpMHnU7Hx7B32OmiudR1yDSItLbX+yI4HmwyWfK6j/7wh95dKDgI4Dt6Gh7vOO8bQYZgmtg45dbqL/pbfsjA8NimqVsOHG/BFlHnYie7lxS4JAVa9RDZVBxLzglZ8b2ykDpI8E7o98g7XhaUCcnlMW2SS3fsXll15izcBGXSjZvNtA5H2uETpxFqDPHuXFC4SO+oG+fz+tYRoLhNUrAUfGawe3WsAK9nBHh/Y6ckk+sJHkOTWK01t2Bb4RdrwrTBIRAMelhy8/F2SNB7h06eHVhR+RgaMoaNVwNEUHjjf4jqjepCQXG9vw/UKGCTyWj0osxIGxJGTBdXXJ01p6+rzgrotDyyJOKKmHFe81p88/VfbT8YrqfI8QIqQKsROVSM8P7uFhvvGZn8/mUekPwGiizKtD6icPppdAiNbjXqxpLlqTXmqxBDCA56R2TQkVG1VdXompP7THSQbuPOf/8IU5gxcLMyfBz1GiP4k1H2EpLBo5ilhiPPNbLkcyMbERLT6tniLdu3lO1JhyY0lBtRTc/qTCYIzKBQIx5mX8Wrt26NleobtqUfzwhmaYNTQQ6wIxAm1VxfYvJ5RCB3ChxGrcY7ETkZwdHNYh+f+uVQwbKVJjEkGAKNk5wu2N9+A1Gj34RktUGgvMSelf98Ds+fPvt+eFVNxr6T57uXlj/iCc8boX7GyAp2Ag9B+IGkklkI5BB5RxceabLmFR/OnZHaTqK8IRB8DJ46um97PR9RKd1Rn9gKMiU8vghF06Mr12DauiulS+Hd8zlXbiw5ffm6yU7Gq9ne5xlRsVA9/agb6ElmiCki2FHy+IB58kcpbksN5Rc9NA4nbDRp2fhRyHVLKN99CM3nT4ccF0vkdnKva4KDYautQ83OdEPbo8cWGG4XZf18wTyu+olVCDDGW1vkgFCGIASkb58h5bUHciZ9NKS+pARagsBCu8t7rgtE4sKA5ASMSN+I+1GRqKeFwwf15d4ReZQSsSnCZCK55VoBsPbb9oknTu565/WBmSHG4I4eBqkvrP2znBJJ3BBOfw90EVEme0nVkZzxE4dZ7xYhyGgE7HbYB7yMQWuWoG7YYFz+8juguAwjp05El5d6o8WYt1AbHweJFlIjUKb7UKKFnbz2ZW6Ba+naLQ8abHZekjQ6qk0xzZpg3DvDeGYU0Fi1eXalSQzRzeOs+fe+z54w6RVbcTH0pjBYyRCLqEECXQ1lD9B1ynuoahmH/MxsSJWVEC5mo+Xg/vB06gTb6fNMAkCgBGkk/uQnJmD5I0veuZLy2TpRXNxgdzwcOnQotP6JjS0uKt6QPG5otEEIaR7/XNWps/tyZ8xJdlZXI5iwryFoyocMRnSXDniycy/qdu/Ho6t5eGHxfGDIK5Cp9p15byYsldWIpIyMmhpoqXZ5SFIciGzi2pR5dXeXdq1XXPjP1sLln2/G9z+ceSq0fdFDhrjJkOAwhMUljb6/Y3+GeeKUZHftE+gJmidkSPHgAejVNgEdb99Bsxd6UxYOhvNuMbJHf4Cyucugr65FyjdfwnLZjMJN20DJBXVJiVgqaR58dyFn2sz3R07+5ejWwp49usJO5FcPLfxCmMNCXjLGttHBISwzT5895/7edIikO0hrQCJIPB2S8caH76LmTiFOfLMZho4d0Ilgc9RayZNalP9wCvW2BkTGtwTu36cMHYWCpLZYfrv0V4Ijdf/mFedGDBsEG41x1Nt+n/Q4RyU3gvQGmFo907HhZsnPmSNGzrm391/QUhbV0SK1lEMamkUj6l4JKmenIS6xNVJ2rUffMSMhmyJQOqg/ZOJeUFgobJevoCx9P4zhJmQkt8P0y3n745pHjzp3dOu5P78+AI+ra7j+eVqS8KTnoFxgiIqBsWnC1HubdlwkQ16yXL0ObXg4tLLMhZT1r6M5H2yWJ7AW3Ebe/JVI6dwBTqMWDym6WuiDEEnweRrs3N2hFEVH4uI8y8/lrHl7cL+J/z30bUlC6xZcTQZSw88Yg0Gv7dk75QX3nYqffhszbv21BYvCOWfII7zWEEcK9Xq0KbqHzn8ahOqhA9FAiU7Ov4lLw8chqX0iolYvREP7jhBLyqkmURogD+1s0tSx4dzlRbMnjZ2357sVdSxCbWSoSgv/zOszJqFNq+iE5lEbz3w6b2D9+QvQEVSSluoGhS2TifXvjEDn7V+htE1LXNyyF8l/GwPt2BEkH92wF5Xg2tRP0KPbc+hAxlp+yoChVTy2RzZp+OeF7PlL5k5e8VnadJfd4SDp6g6AxSPJT0kVQGO3O63HTp0+ni1qPRFdO3Zua9AbBIJCUopBC8K2U9+eSJkwCrr4eOiowLXu1wt5+behvVcKkRapOHYSTy5dQmiLWOyJbmbfdT77k1WLpn89Z9oE1FLBZBleoo0xgcUMYoHC9IyBoN13+EfcKSoFyzOikxbr06tb2aqF0+ccs9T1/4fdc+hR7+4IJfIJxKW66wXImjwXxZlXEErG6c0FaBlmwisbVgDTJvPMKVOSM1EOIY64d5zPXrJywbS1c2d+4OWHKgsFf3EgeA2DEKhnZKWnGTa4H35KX5c7/M1XRy6+UTzm+8TEYmNyIpcNblJwxbMXw1lVCXNhIY6O+hC6i2Z0cLhJKlhhJH5ltGqFdWey1qb+ffzn82ZNlOsp1NWFmbzwCX14xbkkyb+PJtUwK+2C3c6eMg5HtqzcZ7bZ+39jNB0P6dkNVN7QUFiE4rlL0WnAS4gYPRLmGfNQtHUbDBT2+RS+yzNz08e+NSSNOOJmhkgKIRgkslr4BPjE2x8SWC2OTM+wELZYapHYJh6HN68qiW3b+i+7TBGHTBTCAhU3J3GpcsN26I6egExV2kBRVkOZdVlB0aUenZJSN3+90Npgd/LeCIGK0gcL106Bzc4fyE5FLjCXOihFs+7x67SZDmNM0w8uJbW7ZmoSBYGysD3HjCfXqTmjaJPjYvBFje0+jf94z7fL7+tI97J3GQ5q06fKV05apQNhB5uftywBGlj1IFN6ijDljCfjbJT+F06bUHvdLU229unlElxuUv86LkUNVH0PmyJcl/JuL9y5YXEm8ybLI4KiuEW16ZPh68vYe0y3qJ5SZW6gMbxQy0pP5GW/RvDuhin68W8NuXhSp18f/mxHqk8OBNOObya0xqZM845PZry/642hL6O2rt77/lPwcMEmeY3jHQhr5vwMeaqjVHbCc0Bjjva+IMBa34B+vbqhaXzcssIOSSVGgsIZH4t1RQ+uPd8pedmnsya6a0nVqS2wr0NVvONROk4Z/kJfaXGV6HrKM4KiZ1TpqQzkTRt4mR87fJDlioRF4a/2x0GIjpslD5ZsXD2/lLUeqijjHaOfY9iGJCXT8tZWUGHxNnIaMZDMWrU7MFK1lSmbuogXPJH5tbhu+i0xuQ1efrHHnoMXsj7eX3Dmxmf/mHqkd//ekAmeCJIQXqi9XFM9zaKTkZp9iWCphvNSUvIMjWEaWqN8heDGuFxOFNy4gwVL13KtqhjOB6vtCjNQr9fR1eNet/PgBHuD01lRUelZMH+Vb5xiTSMUsncOxju2oOD7WOCFj5UInU6D3Gs3+HAuKdLS0kgVkixQhM4ffPXw8YBFg5F2w3bNxqtftv7f4Z1LaGSG3Cj+1TaXzce8N3z4cPxPgAEA6JcjmcJQzpoAAAAASUVORK5CYII="'
													+ ' 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://gf.qytechs.cn/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://gf.qytechs.cn/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://gf.qytechs.cn/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://gf.qytechs.cn/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://gf.qytechs.cn/scripts/1670-tw-collections/code/TW-Collections.user.js",
																		'_self');

													})
											.addButton('no', function() {

												parent.hide();

											})
											.addButton(
													'Script page',
													function() {
														parent.hide();
														window
																.open(
																		"https://gf.qytechs.cn/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();

			}
		});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址