
var defaultConfig = {
	myoptions: {
		"armory":true,
		"unpaused":true,
		"autoimgmapovl":true,
		"veteran_filters":false,
		"info":true,
		"zk":true,
		"glamurstupki":true,
		"bodestate":true,
		"sidzoku":true,
		"spdressroom":true,
		"nickhistory":true,
		"uslugi_igrokov":true,
		"kachestvo_zatochki":true,
		"bWeak_green":true,
		"cemetry":true,
		"sledopit":true,
		"numfight":true,
		"numcapcha":true,
		"kbdinst":true,
		"chatsectors":true,
		"location_info":true,
		"tab_refresh":true,
		"esc_move":true,
		"fastex":true,
		"addMoney":false,
		"show_money_piastres":false,
		"show_money_dust":false,
		"show_money_supplies":false,
		"show_money_authority":false,
		"show_money_xenoteks":false,
		"show_money_crystals":false,
		"ktLumen":false,
		"kbdunderground":true,
		"lotereya":true,
		"estatenamelink":true,
		"forumgoto":true,
		"chat_holiday":true,
		"eventRateGiving":false,
		"aliensmy":true,
		"clnick":true,
		"keyenter":true,
		"keyalt":true,
		"questsectors":true,
		"userlistactiveitems": true,
		"damaged_items_notification_filter": true,
		"clickable_nicks_on_clan_tournament": true,
		"stockmy_island":true,
		"taverna_filters":true,
		"startup_update_notification":true,
		"global_info": true,
		"contextmenus": true,
		"teammate_trace": false,
		"taverna_fast_click": true,
		"timer_egg": true,
		"timer_always_show": true,
		"stock_sell_offline_find": true,
		"clickablePSmiles" : true,
		'estateVictims': true,
		'battleInfo': true,
		'menu_maps': true,
		'lottery_zk': true,
		'menu_maps_goto': false,
		'repeat_kudes': true,
		'set_count_aukc': false,
		'repeat_metall': true,
		'metall_buy_rudpol': false,
		'kudes_buy_rudpol': false,
		'ss_kudes_stav': true,
		'calc_kudes_polyana': false,
		'no_flash': false,
		'buttons_holder': false,
        'buttons_holder_oneDiv': false,
		'give_gold_anticommercial': false,
		'biggest_buttons': false,
		'battle_move': false,
		'oplot_button': true,
		'forum_pages': true,
		'clan_ct_buttons': true,
		'inventory': true,
		'inventorytime': true,
		'snow': false,
		'sanctions': false,
		'buy_taverna': false,
		'lzglittle': false,
		'no_block_browser_keys': true,
		'chatLightMessage': false,
		'chatOtherUsersMessageColor': false,
		'filterEmptyJailNotfication': false,
        'filterWaitBattleEndMessage': false,
        'filterOneSideFactionsMessage': false,
        'filterEmptyIslandEnemies': false,
        'filterAltarRequireBlood': false,
        'filterMessageBZA': false,
		'okHelpMessageFilterEnabled': false,
		'filterOneTeamIsStrongerMessage': false,
		'filterBattleIsClosedMessage': false,
		'filterRingOfRendomMessage': false,
		'filterBoiZaArtiMessage': false,
		'filterGoldenHorseShoeMessage' : false,
		'anotherEliteTournamentMessage' : false,
		'filterEliteTournamentMessage' : false,
		'CTFilterEnabled': false,
		'ERAFFilterEnabled': false,
		'senallpipleonthebuttle': false,
		'sp_extendable_shutup' : false,
		'sp_context_shutup' : false,
		'sp_context_private_file': false,
		'sp_context_warn': false,
		'sp_context_link': false,
		'sp_chat_shut_up': false,
		'sp_shut_up_panel_background_color': false,
        'sp_shut_up_panel_only_links': false,
        'sp_shut_up_panel_links_giver': false,
        'trade_flooder_active': false,
        'silence_caretaker': false,
        'alternative_chat_send': false,
        'forum_ignore': true,
        'sets_autowear': false,
        'trade_bookmarks':true,
        'location_bot_info':true,
        'expedition_estate':true,
        'underground_map':true,
        'mine_floor_change':false,
        'turquoise_grid': true,
        'smile_izbron': true,
        'estate_services': true,
        'personal_message_v':true,
        'personal_message_s': true,
        'personal_message_k': true,
        'personal_message_f': true,
        'pressedEnter': false,
		'refresh_loc' : false,
		'use_abills_hp' : false,
		'first_smile_izbron' : false,
		'chengeheroAvatar': false,
		'quickBuySanctuary': false,
		'kt_nikname_array_chk': false,
		'Other_Cell_Icons' : false,
        'inverse_log' : false,
        'change_weak' : false,
		'give_gold_commercial': false,		
	},
	
	systemOptions: {
		"background_scripts_host": "er-help.ru/extension",
		"trace_img_src": "",
		"imgmapovl": "mapnew",
		"buy_remeslo_count": "10",
		"kt_count_approach": "14",
		"kt_nikname_array": "",
		"buy_taverna_count": "9",
		"ss_kudes_stav_count": "10",
		"button_position": "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18",
		"timers_position": "2|3|4|5|6|15|1|7|8|9|10|11|12|18|13|14|16|17|19|20|21|22|23|24|25|26|27|28",
		"calc_kudes_prise": "20|35|29|12|15|1|0.7|0.9|1|2.7|1.3|1.3|2.3|2|12|1.8|2.5|2.5|3|2.5|300",
		"ng_presents2": "Звёздочка|0|-|-|-|Страница|1|-|-|-|ФейвИШамунь|2|-|-|-|Ослик|3|1|1|1|Ворон|4|-|-|-|Удочка|5|13240|13216|13192|Клетка|5|13239|13215|13191|Нож|5|13252|13228|13204|Мирка|6|-|-|-|Умелка|7|-|-|-|ЗЗГ|8|-|-|-|Клубок|9|-|-|-|",
		"tav_name": "Таверна",
		"jew_name": "Ювелирка-З",
		"jew2_name": "Ювелирка-Б",
		"units_сard": "Карты юнитов",
		"tac_name": "Лечение ТБ",
		"biryuza_name": "Закончился бирюзовый идол",
		"malakhitovyy_name": "Закончился малахитовый идол",
		"pobeda_venetc_name": "Закончился Венец победителя",
		"pobeda_medal_name": "Закончилась Медаль победителя",
		"pobeda_kubok_name": "Закончился Кубок победителя",
		"pobeda_runa_name": "Закончилась Руна победителя",
		"pobeda_plazma_name": "Закончился Плазмотрон победителя",
		"cra_name": "Ремесло-ТГ",
		"cra2_name": "Ремесло-ЗО",
		"est_name": "Поместье",
		"priv_name": "ЛС",
		"kk_name": "Клан Квест",
		"pet_name": "Лицензии",
		"elite_trining_name": "Тренировка",
		"guildhalling_name": "Гильдия го квест",
		"mir_aur_1_name": "Рост проф",
		"mir_aur_2_name": "Адреналин",
		"war_aur_1_name": "Мощь клана",
		"war_aur_2_name": "Прирост зла",
		"war_aur_3_name": "Умелочка",
		"war_aur_4_name": "Феникс",
		"war_aur_5_name": "Невид",
		"war_aur_6_name": "Величие",
		"mazz_aur_name": "Мазюкалка",
		"bloodiness_name": "Кровь",
		"och_name": "ОР",
		"veter_name": "Пора получать доход",
		"tracery_name": "Закончились все узоры!",
		"figure_name": "А король-то - голый!",
		"aura_name": "Аура храма",
		"kt_message_text": "Начало в 30 минут!!! :339:",
		"monster_fon": "res/infliction_layer_blue.png",
		"turquoise_grid_map": "res/infliction_layer_blue.png",
		"custom_sounds": "",
		"sizeheroAvatar": 100,
		"estateVictims" : {
			"popupPositionX" : -1,
			"popupPositionY" : -1
		},
        "forumIgnore": {
            "popupPositionX" : -1,
            "popupPositionY" : -1
        },
		"okHelpMessageMinLevel" : 10,
		"minCTtime" : 9,
		"maxCTtime" : 24,
		"kol_ochrab": 320,
		"opac_ext_count": 70,
		"opac_ext_count2": 100,
		"t_big_width": 150,
		"t_middle_width": 100,
		"t_small_width": 80,
		"t_big_font": 12,
		"t_middle_font": 10,
		"t_small_font": 8,
		"smile_position": "384|385|386|387|388|389",
		"tracery_count": 1,
		"chatBgColor" : "#00FF7F",
		"chatMsgColor" : "#000000",
		"shutUpBgColor" : "#d7d7d7",
		"sp_shut_up_links": "",
		"sp_qreas_time_map": 
			"0:3,6;" +
			"1:3,6;" + 
			"2:6,18;" +
			"3:6,36;" +
			"4:1,3;" + 
			"5:6,18,36,72,144;" +
			"6:144;" + 
			"7:6,18,36,72,144;" + 
			"8:144;" +
			"9:144;" + 
			"10:36,72;" +
			"11:1,3;" +
			"12:1,3;" + 
			"13:6,18;" + 
			"14:144;" +
			"15:144;" +
			"16:72,144;" +
			"17:72,144;" +
			"18:144;" +
			"19:72,144;" +
			"20:72,144;" +
			"21:36,72;" + 
			"23:144;",
        "sp_shut_up_warnings":
            "Флуд|4.1.1 Флуд. Не флудите пожалуйста!;" +
            "Флуд смайлами|4.1.1 Флуд. Не флудите смайлами!;" +
            "Реклама боя|4.1.1 Флуд. Реклама боя не чаще 1 раза в 3 минуты!;" +
            "Благо|4.1.1 Флуд. Просьба о благословении допустима не чаще 1 раза в 3 минуты!;" +
            "Капс|4.1.2 Капс. Не пишите ЗАГЛАВНЫМИ буквами!; " +
            "Создание конфликта|4.1.3 Создание конфликта, провокация и/или подстрекательство к нарушению законов проекта!;" +
            "Обсуждение СП и администрации|4.1.4 Обсуждение Администрации проекта или СП, помеха в работе!;" +
            "Попрошайничество |4.1.5 Попрошайничество. Не попрошайничайте!;" +
            "Реклама наставничества|4.4.3 Реклама услуг наставника/поиска наставника. Реклама наставничества допустима не чаще 1 раза в 10 минут!;" +
            "Поиск наставника|4.4.3 Реклама услуг наставника/поиска наставника. Поиск наставника допустим не чаще 1 раза в 10 минут!;" +
            "Поиск рефералов|4.4.3 Реклама услуг наставника/поиска наставника. Поиск рефералов допустим только в торговом чате!;" +
            "Реклама товаров|4.4.4 Реклама вне торгового чата. Реклама товаров допустима только в торговом чате!;" +
            "Реклама клана|4.4.4 Реклама вне торгового чата. Реклама набора в клан допустима только в торговом чате!;" +
            "Реклама клан-сайтов|4.4.4 Реклама вне торгового чата. Реклама клан-сайтов допустима только в торговом чате!;" +
            "Поиск товаров|4.4.4 Реклама вне торгового чата. Поиск товаров допустим только в торговом чате!;" +
            "Реклама платного блага|4.4.4 Реклама вне торгового чата. Реклама платного благословения допустима только в торговом чате!;" +
            "Поиск платного блага|4.4.4 Реклама вне торгового чата. Поиск платного благословения допустим только в торговом чате!;" +
            "Реклама шахты|4.4.4 Реклама вне торгового чата. Реклама клановой шахты допустима только в торговом чате!;" +
            "Реклама услуг|4.4.4 Реклама вне торгового чата. Реклама профессиональных услуг допустима только в торговом чате!;" +
            "Поиск услуг|4.4.4 Реклама вне торгового чата. Поиск профессиональных услуг допустим только в торговом чате!",
		"trade_flooder_phrases": "",
		"silence_caretaker_regular": "",
        "forum_ignore_user_replace": "glad",
        'heroAvatar': '',
        'myheroAvatar': '',
        "private_chat_logger_width": 900,
        "private_chat_logger_height": 400,
        "private_chat_logger_max_messages": 100,
        "private_chat_logger_order_asc": false
	},

	soundOptions: {
		"sound_elitka": {
			sound: "nosound",
			detect: "Вас вызвали на арену Элитных Турниров! Есть"
		},
		"sound_event": {
			sound: "nosound",
			detect: "Началось случайное событие <b>"
		},
		"sound_kt": {
			sound: "nosound",
			detect: "Сражаются: <img width="
		},
		"sound_aliens": {
			sound: "nosound",
			detect: "Добро пожаловать на остров! Вы можете координировать"
		},
		"sound_fishing": {
			sound: "nosound",
			detect: "У вас закончилась приманка!"
		},
		"sound_tool_broken": {
			sound: "nosound",
			detect: "текущая прочность инструмента: <b>0</b>"
		},
		"sound_tool_broken2": {
			sound: "nosound",
			detect: "Ваш.+сломан.*|Ваш.+изношен.*"
		},
		"sound_full_wagon": {
			sound: "nosound",
			detect: "Т.л.жка п.р.груж.на!"
		},
		"sound_full_weight": {
			sound: "nosound",
			detect: "Вы п.р.груж.ны*"
		},
		"sound_user_injury" : {
			sound: "nosound",
			detect: "Персонаж.+травмирован"	
		},
		"sound_user_injury_s" : {
			sound: "nosound",
			detect: ".+получили смертельную травму.+"	
		},
		"sound_random_event": {
			sound: "nosound",
			detect: ""
		},
		"sound_zavod": {
			sound: "nosound",
			detect: ""
		},
		"sound_sp_shut_up": {
			sound: "nosound",
			detect: ""
		},
		"sound_taverna": {
			sound: "nosound",
			detect: ""
		},
		"sound_elite_trining": {
			sound: "nosound",
			detect: ""
		},
		/*"sound_guildhalling": {
			sound: "nosound",
			detect: ""
		},*/
		"sound_est": {
			sound: "nosound",
			detect: ""
		},
		"sound_pet": {
			sound: "nosound",
			detect: ""
		},
		"sound_waraur": {
			sound: "nosound",
			detect: ""
		},
		"sound_miraur": {
			sound: "nosound",
			detect: ""
		},
		"sound_mazaur": {
			sound: "nosound",
			detect: ""
		},
		"sound_golos": {
			sound: "nosound",
			detect: ""
		},
		"sound_aurhram": {
			sound: "nosound",
			detect: ""
		},
		"sound_tac": {
			sound: "nosound",
			detect: ""
		},
		"sound_units_сard": {
			sound: "nosound",
			detect: ""
		},
		"sound_jeweler": {
			sound: "nosound",
			detect: ""
		},
		"sound_jeweler2": {
			sound: "nosound",
			detect: ""
		},
		"sound_craftsman": {
			sound: "nosound",
			detect: ""
		},
		"sound_craftsman2": {
			sound: "nosound",
			detect: ""
		},
		"sound_item_broken": {
			sound: "nosound",
			detect: "Вещи сломались"
		},
		"sound_caving": {
			sound: "nosound",
			detect: "Сейсмопредупреждение"
		},
		"sound_vnezap": {
			sound: "nosound",
			detect: "Внезапный удар"
		}	,
		"sound_heal": {
			sound: "nosound",
			detect: "Воодушевление"
		},
		"sound_25": {
			sound: "nosound",
			detect: ""
		},
		"sound_50": {
			sound: "nosound",
			detect: ""
		},
		"sound_75": {
			sound: "nosound",
			detect: ""
		},
		"sound_100": {
			sound: "nosound",
			detect: ""
		},
		"sound_attack_to" : {
			sound: "nosound",
			detect: "атакован монстрами на секторе"	
		},
        "sound_battle_skip_turn": {
            sound: "nosound",
            detect: ""
        },
        "sound_battle_auto_end_turn": {
            sound: "nosound",
            detect: ""
        },
        "sound_septikons": {
            sound: "nosound",
            detect: ".*На секторах.+появились септиконы!"
        },
		"sound_malahit": {
			sound: "nosound",
			detect: "Малахитовый идол .+израсходован!"
		},
		"sound_freedom": {
			sound: "nosound",
			detect: "Вы выходите на свободу!"
		},
		"sound_island_update": {
			sound: "nosound",
			detect: "Месторождения на острове обновились!"
		},
		"sound_CutDownAllTrees": {
			sound: "nosound",
			detect: ".*все.*деревья.*"
		},
		"sound_klan_kvest": {
			sound: "nosound",
			detect: ".*кланов.+квест.+Задание:.*"
		},
		"sound_jila_island": {
			sound: "nosound",
			detect: ".+на секторе истощены.+"
		},
		"sound_or_island": {
			sound: "nosound",
			detect: "Недостаточно очков работы.+"
		},
		"sound_mp3_boss": {
			sound: "nosound",
			detect: "На вас напал <b>"
		},
		"sound_kons": {
            sound: "nosound",
            detect: "Вам доступно новое сообщение в разделе "
        },
		"sound_mp3_res_off": {
            sound: "nosound",
            detect: "Недостаточно ресурсов*"
        },
        "sound_mp3_ship_repair": {
            sound: "nosound",
            detect: "Внимание! Осталось прочности корабля*"
        }
	},
	estateVictims: {},
    forumIgnore: {},
    trade_bookmarks: {}
}

function mergeOptions(options, defaultOptions) {
	if (options === null) {
		return defaultOptions;
	}

	for (key in options) {
		defaultOptions[key] = options[key];
	}
	
	return defaultOptions;
}

function xpath(query, object) {
	if(!object) var object = document;
	return object.evaluate(query, object, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
}

var trans=[];
var snart=[];
for (var i = 0x410; i <= 0x44F; i++) {
	trans[i] = i - 0x350;
	snart[i-0x350] = i;
}
trans[0x401]= 0xA8;
trans[0x451]= 0xB8;
snart[0xA8] = 0x401;
snart[0xB8] = 0x451;

CP1251urlencode = function(str) {
	var ret=[];
	for(var i=0;i<str.length;i++) {
		var n=str.charCodeAt(i);
		if(typeof trans[n]!='undefined') {
			n = trans[n];
		}
		
		if (n <= 0xFF) {
			ret.push(n);
		}
	}

	return escape(String.fromCharCode.apply(null,ret));
}

function inject_global(script_src) {
	var scr = document.createElement("script");
	scr.text = script_src;
	document.body.appendChild(scr);
}

getStringifyParams = function(str) {
	var mas = str.match(/(.*)$/gm);
	var result = "";
	for (var i = 0; i < mas.length; i++) {
		if (mas[i] != "") result += mas[i] + "\"+\n\"";
	};
return result;
}


var toolsClass = function() {
	var self = this;
	
	this.loadOptions = function(options, callback) {
        var loadedOptions = {};

        for (i in options) {
            var extOptions = kango.storage.getItem(options[i].systemName);

            loadedOptions[options[i].systemName] =
                JSON.parse(JSON.stringify(mergeOptions(extOptions, defaultConfig[options[i].defaultName])));
        }

        callback(loadedOptions);
	};
}

var tools = new toolsClass();
