HWM Map Move

HWM Mod - Перемещение по карте в один клик

当前为 2015-07-05 提交的版本,查看 最新版本

// ==UserScript==
// @name 		HWM Map Move
// @version 	2.02.5
// @description 	HWM Mod - Перемещение по карте в один клик
// @author 	xo4yxa
// @namespace	fix Mefistophel_Gr
// @homepage 	https://greasyfork.org/ru/scripts/9472-hwm-map-move
// @include 	http://*heroeswm.ru/map.php*
// @include 	http://178.248.235.15/map.php*
// @grant 		GM_getValue
// @grant 		GM_setValue
// @grant 		GM_deleteValue
// ==/UserScript==

// (c) 2008-2013, xo4yxa (http://www.heroeswm.ru/pl_info.php?id=130) 		- оригинальный скрипт
// 2014-2015, Mefistophel_Gr (http://www.heroeswm.ru/pl_info.php?id=2287844) 	- последняя модификация

(function() {

    var ver = '2.02.5'

    if (typeof GM_deleteValue != 'function') {
        this.GM_getValue=function (key,def) {return localStorage[key] || def;};
        this.GM_setValue=function (key,value) {return localStorage[key]=value;};
        this.GM_deleteValue=function (key) {return delete localStorage[key];};
    }

    var coop = '<center style="font-size:10px;">&#169; <a href="http://www.heroeswm.ru/pl_info.php?id=130" target=_blank style="font-size:10px;">xo4yxa</a> 2011-13   |   <a href="http://www.heroeswm.ru/pl_info.php?id=2287844" target=_blank style="font-size:10px;">Mefistophel_Gr</a> 2014-15   |    <a href="https://greasyfork.org/ru/scripts/9472-hwm-map-move" target=_blank style="font-size:10px;">HWM Map Move</a> v.' + ver + '   |    <span style="text-decoration:underline;cursor:pointer;font-weight:bold;" id="hwmmm_options">Настройки</span> <br><br> </center>' ;

    var url = 'http://www.heroeswm.ru/' ;
    var url_cur = location.href ;
    var url_ref = document.referrer ;
    //var ems = getI( "//embed[@name='map']" ).snapshotItem(0) ;
    //var pl =  ems.getAttribute( 'FlashVars' ).split('=')[1].split(':') ;
    var ems;
    var els = document.getElementsByTagName('param');
    for (var i = 0; i < els.length; i++) {
        var el = els[i];
        if (el.getAttribute('value').contains('map.swf')) {
            ems = els[i+1];
            break; 
        }
    }

    var pl =  ems.getAttribute( 'value' ).split('=')[1].split(':') ;
    var road = new Array() ;
    var transp = GM_getValue( "transport" , 3 ) ;

    var trtime = new Array( 120 , 84 , 60 , 36 , 24 , 12 ) ; 	// время перемещения по прямой
    var trtimed = new Array( 169 , 118 , 84 , 50 , 33 , 16 ) ; 	// время перемещения по диагонали
    var plgn = [ 2 , 6 , 16 , 21 ] ; 			// сектора с ГН

    var b = document.getElementsByTagName( 'body' ) ;

    // вступать в бой ГРж
    if( pl[14] == 0 && b[0].innerHTML.indexOf( 'ranger_attack.php' ) > 0 && ( GM_getValue( "checkgv" , 0 ) == 1 ) )
        window.location.href = url + 'ranger_attack.php' ;

    //если в столице и ГРж нонстоп
    /*
    if( pl[14] == 0 && pl[0] == 1 && ( GM_getValue( "checkgvn" , 0 ) == 1 ) && url_ref == 'http://www.heroeswm.ru/map.php' )
        window.location.href = url + 'ranger_guild.php' ;
    */

    // если было задание ГН и пришли в сектор где есть ГН
    if( pl[14] == 0 && pl[13] == -1 && in_array( pl[0] , plgn ) && GM_getValue( "checkgn" , 0 ) == 1 )
        window.location.href = url + 'mercenary_guild.php' ;


    /* карта локаций
     -- x
    |
    y
      47   48   49   50   51   52   53   54
      --   --   --   --   --   --   --   --   --   --
    | 00 | 23 | 09 | 06 | 24 | 16 | 00 | 00 | 48 	//Непокор. степь, Орл. Гнездо, Мирн. Лагерь, Крист. Сад, Маг. Лес
      --   --   --   --   --   --   --   --   --   -- 
    | 00 | 13 | 12 | 03 | 04 | 15 | 18 | 00 | 49 	//Солн. Город, Сияющ. Родн., Тигр. Озеро, Лес Разбойн., Медв. Гора, Мифр. Берег
      --   --   --   --   --   --   --   --   --   --
    | 00 | 27 | 08 | 01 | 02 | 14 | 17 | 00 | 50 	//Великое Древо, Зел. Лес, Стол. Империи, Вост. Река, Магма Шахты, Порт. Город
      --   --   --   --   --   --   --   --   --   --
    | 00 | 00 | 07 | 05 | 11 | 00 | 00 | 00 | 51 	//Равнина Ящеров, Долина Волков, Пещеры Драконов
      --   --   --   --   --   --   --   --   --   --
    | 00 | 00 | 26 | 10 | 19 | 00 | 25 | 00 | 52 	//Дикие земли, Руины Портала, Великая Стена,   море  , Вост. Остров
      --   --   --   --   --   --   --   --   --   --
    | 00 | 00 | 00 | 00 | 20 | 21 | 00 | 00 | 53 	//Равнина Титанов, Рыбачье село
      --   --   --   --   --   --   --   --   --   --
    | 00 | 00 | 00 | 00 | 00 | 22 | 00 | 00 | 54 	//Замок Королевства
      --   --   --   --   --   --   --   --   --   --
    */

    // отрисовка карты
    var dm = document.createElement( 'div' );
    dm.innerHTML = '<br><center> <a href="http://www.heroeswm.ru/ranger_guild.php"><img src="http://im.heroeswm.ru/i/houses/ranger.gif" border="0" title="Гильдия Рейнджеров"></a> <a href="http://www.heroeswm.ru/hunter_guild.php"><img src="http://im.heroeswm.ru/i/houses/hunter.gif" border="0" title="Гильдия Охотников"></a> <a href="http://www.heroeswm.ru/mercenary_guild.php"><img src="http://im.heroeswm.ru/i/houses/merc.gif" border="0" title="Гильдия Наёмников"></a> <a href="http://www.heroeswm.ru/thief_guild.php"><img src="http://im.heroeswm.ru/i/houses/thief.gif" border="0" title="Гильдия Воров"></a> &nbsp;&nbsp; <a href="http://www.heroeswm.ru/map.php?action=skip"><img src="http://i.imgur.com/rDyCmwf.png" border="0" title="Пропустить охоту"></a></center> <table>' +
    '<tr>' +
    '<td><div id="loc_23"></div></td>' +
    '<td><div id="loc_9"></div></td>' +
    '<td><div id="loc_6"></div></td>' +
    '<td><div id="loc_24"></div></td>' +
    '<td><div id="loc_16"></div></td>' +
    '<td></td>' +
    '</tr>' +
    '<tr>' +
    '<td><div id="loc_13"></div></td>' +
    '<td><div id="loc_12"></div></td>' +
    '<td><div id="loc_3"></div></td>' +
    '<td><div id="loc_4"></div></td>' +
    '<td><div id="loc_15"></div></td>' +
    '<td><div id="loc_18"></div></td>' +
    '</tr>' +
    '<tr>' +
    '<td><div id="loc_27"></div></td>' +
    '<td><div id="loc_8"></div></td>' +
    '<td><div id="loc_1"></div></td>' +
    '<td><div id="loc_2"></div></td>' +
    '<td><div id="loc_14"></div></td>' +
    '<td><div id="loc_17"></div></td>' +
    '</tr>' +
    '<tr>' +
    '<td></td>' +
    '<td><div id="loc_7"></div></td>' +
    '<td><div id="loc_5"></div></td>' +
    '<td><div id="loc_11"></div></td>' +
    '<td></td>' +
    '<td></td>' +
    '</tr>' +
    '<tr>' +
    '<td><div id="loc_25"></div></td>' +
    '<td><div id="loc_26"></div></td>' +
    '<td><div id="loc_10"></div></td>' +
    '<td><div id="loc_19"></div></td>' +
    '<td></td>' +
    '<td></td>' +
    '</tr>' +
    '<tr>' +
    '<td></td>' +
    '<td></td>' +
    '<td></td>' +
    '<td><div id="loc_20"></div></td>' +
    '<td><div id="loc_21"></div></td>' +
    '<td></td>' +
    '</tr>' +
    '<tr>' +
    '<td></td>' +
    '<td></td>' +
    '<td></td>' +
    '<td></td>' +
    '<td><div id="loc_22"></div></td>' +
    '<td></td>' +
    '</tr>' +
    '</table><br>' +
    coop + '<br>' ;

    if( GM_getValue( "checklng" ) && GM_getValue( "checklng" ) == 1 ) {
        var check_lng_v = 1 ;
        var lng = 2 + 3 ;
    } else {
        var check_lng_v = 0 ;
        var lng = 1 + 3 ;
    }


    // cX_Y  координаты по карте
    var locX =
    {
        c50_50:	1,	//Empire Capital
        c51_50:	2,	//East River
        c50_49:	3,	//Tiger's Lake
        c51_49:	4,	//Rogue's Wood
        c50_51:	5,	//Wolf's Dale
        c50_48:	6,	//Peaceful Camp
        c49_51:	7,	//Lizard's Lowland
        c49_50:	8,	//Green Wood
        c49_48:	9,	//Eagle's Nest 	//Inferno portal 2
        c50_52:	10,	//Portal Ruins 	//Inferno portal 1
        c51_51:	11,	//Dragon's Caves
        c49_49:	12,	//Shining Spring
        c48_49:	13,	//Sunny City
        c52_50:	14,	//Magma Mines
        c52_49:	15,	//Bear' Mountain
        c52_48:	16,	//Fairy Trees
        c53_50:	17,	//Harbour City
        c53_49:	18,	//Mythril Coast 	//Inferno portal 3
        c51_52:	19,	//Great Wall
        c51_53:	20,	//Titans' Valley
        c52_53:	21,	//Fishing Village
        c52_54:	22,	//Kingdom Castle
        c48_48:	23,	//Ungovernable Steppe
        c51_48:	24,	//Crystal Garden
        c49_52:	25,	//Empty 		//East Island (Old Location)
        c49_52:	26,	//The Wilderness
        c48_50:	27	//Sublime Arbor

    }

    // Массив локаций
    var locArr = new Array(
    //  0i	1x	2y	3r	4ne			5nr
        [] ,
        [ 1 , 	50 ,	50 ,	1 ,	'Empire Capital' ,		'Столица Империи' ] ,
        [ 2 ,	51 ,	50 ,	1 ,	'East River' ,		'Восточная Река' ] ,
        [ 3 ,	50 ,	49 ,	1 ,	'Tiger\'s Lake' ,		'Тигриное Озеро' ] ,
        [ 4 ,	51 ,	49 ,	1 ,	'Rogue\'s Wood' ,		'Лес Разбойников' ] ,
        [ 5 ,	50 ,	51 ,	1 ,	'Wolf\'s Dale' ,		'Долина Волков' ] ,
        [ 6 ,	50 ,	48 ,	1 ,	'Peaceful Camp' ,		'Мирный Лагерь' ] ,
        [ 7 ,	49 ,	51 ,	1 ,	'Lizard\'s Lowland' ,		'Равнина Ящеров' ] ,
        [ 8 ,	49 ,	50 ,	1 ,	'Green Wood' ,		'Зелёный Лес' ] ,
        [ 9 ,	49 ,	48 ,	1 ,	'Eagle\'s Nest' ,		'Орлиное Гнездо' ] ,
        [ 10 ,	50 ,	52 ,	1 ,	'Portal\'s ruins' ,		'Руины Портала' ] ,
        [ 11 ,	51 ,	51 ,	1 ,	'Dragon\'s Caves' ,		'Пещеры Драконов' ] ,
        [ 12 ,	49 ,	49 ,	1 ,	'Shining Spring' ,		'Сияющий Родник' ] ,
        [ 13 ,	48 ,	49 ,	1 ,	'Sunny City' ,		'Солнечный Город' ] ,
        [ 14 ,	52 ,	50 ,	1 ,	'Magma Mines' ,		'Магма Шахты' ] ,
        [ 15 ,	52 ,	49 ,	1 ,	'Bear\' Mountain' ,		'Медвежья Гора' ] ,
        [ 16 ,	52 ,	48 ,	1 ,	'Fairy Trees' ,		'Магический Лес' ] ,
        [ 17 ,	53 ,	50 ,	1 ,	'Harbour City ' ,		'Портовый Город' ] ,
        [ 18 ,	53 ,	49 ,	1 ,	'Mythril Coast' ,		'Мифриловый Берег' ] ,
        [ 19 ,	51 ,	52 ,	1 ,	'Great Wall' ,		'Великая Стена' ] ,
        [ 20 ,	51 ,	53 ,	1 ,	'Titans\' Valley' ,		'Равнина Титанов' ] ,
        [ 21 ,	52 ,	53 ,	1 ,	'Fishing Village' ,		'Рыбачье Село' ] ,
        [ 22 ,	52 ,	54 ,	1 ,	'Kingdom Castle' ,		'Замок Королевства' ] ,
        [ 23 ,	48 ,	48 ,	1 ,	'Ungovernable Steppe' ,	'Непокорная Степь' ] ,
        [ 24 ,	51 ,	48 ,	1 ,	'Crystal Garden' ,		'Кристальный Сад' ] ,
        [ 25 ,	49 ,	52 ,	1 ,	'Empty' ,			'Пусто' ] ,
        [ 26 ,	49 ,	52 ,	1 ,	'The Wilderness' ,		'Дикие Земли' ] ,
        [ 27 ,	48 ,	50 ,	1 ,	'Sublime Arbor' ,		'Великое Древо' ]
    )

    // location error
    // сначала путь берёт диагональ, а потом катет
    var locP =
    {
        l1_14: 11 ,
        l1_17: 11 ,
        l1_26: 5 ,
        l1_27: 8 ,

        l2_14: 15 ,
        l2_17: 15 ,
        l2_18: 15 ,
        l2_21: 11 ,
        l2_22: 11 ,
        l2_27: 1 ,

        l3_14: 4 ,
        l3_16: 4 ,
        l3_17: 4 ,
        l3_26: 1 ,
        l3_27: 12 ,

        l4_14: 15 ,
        l4_16: 15 ,
        l4_17: 15 ,
        l4_21: 2 ,
        l4_22: 2 ,
        l4_26: 2 ,
        l4_27: 3 ,

        l5_14: 11 ,
        l5_17: 11 ,
        l5_19: 10 ,
        l5_20: 10 ,
        l5_21: 10 ,
        l5_22: 10 ,
        l5_27: 8 ,

        l6_2: 4 ,
        l6_16: 4 ,
        l6_26: 3 ,
        l6_27: 12 ,

        l7_13: 8 ,
        l7_14: 5 ,
        l7_17: 5 ,
        l7_23: 8 ,
        l7_26: 5 ,

        l8_14: 5 ,
        l8_17: 5 ,
        l8_26: 5 ,

        l9_16: 3 ,
        l9_26: 3 ,

        l10_27: 5 ,

        l11_3: 2 ,
        l11_6: 2 ,
        l11_9: 2 ,
        l11_21: 19 ,
        l11_22: 19 ,
        l11_26: 10 ,
        l11_27: 5 ,

        l12_14: 3 ,
        l12_16: 3 ,
        l12_17: 3 ,
        l12_26: 1 ,

        l13_14: 12 ,
        l13_16: 12 ,
        l13_17: 12 ,

        l14_1: 11 ,
        l14_2: 15 ,
        l14_3: 15 ,
        l14_4: 15 ,
        l14_6: 15 ,
        l14_8: 11 ,
        l14_9: 15 ,
        l14_12: 15 ,
        l14_13: 15 ,
        l14_18: 15 ,
        l14_21: 11 ,
        l14_22: 11 ,
        l14_23: 15 ,
        l14_24: 15 ,
        l14_27: 11 ,

    //    l15_6: 4 ,
    //    l15_9: 4 ,
        l15_23: 24 ,
        l15_26: 2 ,
        l15_27: 4 ,

        l16_1: 15 ,
        l16_2: 15 ,
        l16_3: 15 ,
        l16_4: 15 ,
        l16_5: 15 ,
        l16_6: 15 ,
        l16_7: 15 ,
        l16_8: 15 ,
        l16_9: 15 ,
        l16_10: 15 ,
        l16_11: 15 ,
        l16_12: 15 ,
        l16_13: 15 ,
        l16_19: 15 ,
        l16_20: 15 ,
        l16_23: 15 ,
        l16_24: 15 ,
        l16_26: 15 ,
        l16_27: 15 ,

        l17_2: 15 ,
        l17_5: 14 ,
        l17_7: 14 ,
        l17_10: 14 ,
        l17_11: 14 ,
        l17_19: 14 ,
        l17_20: 14 ,
        l17_21: 14 ,
        l17_22: 14 ,
        l17_26: 14 ,
        l17_27: 14 ,

        l18_1: 15 ,
        l18_2: 15 ,
        l18_5: 15 ,
        l18_6: 15 ,
        l18_7: 15 ,
        l18_8: 15 ,
        l18_9: 15 ,
        l18_10: 17 ,
        l18_11: 17 ,
        l18_14: 17 ,
        l18_19: 17 ,
        l18_20: 17 ,
        l18_21: 17 ,
        l18_22: 17 ,
        l18_23: 15 ,
        l18_24: 15 ,
        l18_26: 17 ,
        l18_27: 15 ,

        l19_1: 11 ,
        l19_3: 11 ,
        l19_5: 10 ,
        l19_6: 11 ,
        l19_7: 10 ,
        l19_8: 10 ,
        l19_9: 11 ,
        l19_12: 10 ,
        l19_13: 10 ,
        l19_14: 11 ,
        l19_15: 11 ,
        l19_16: 11 ,
        l19_17: 11 ,
        l19_18: 11 ,
        l19_23: 10 ,
        l19_27: 10 ,

        l20_14: 19 ,
        l20_15: 19 ,
        l20_16: 19 ,
        l20_17: 19 ,
        l20_18: 19 ,
        l20_27: 10 ,

        l21_14: 19 ,
        l21_15: 19 ,
        l21_16: 19 ,
        l21_17: 19 ,
        l21_18: 19 ,
        l21_27: 19 ,

        l22_17: 21 ,
        l22_18: 21 ,
        l22_27: 20 ,

        l23_16: 15 ,
        l23_26: 1 ,
        l23_27: 13 ,

        l24_16: 15 ,
        l24_21: 2 ,
        l24_22: 2 ,
        l24_26: 2 ,
        l24_27: 3 ,

        l26_7: 5 ,
        l26_8: 5 ,
        l26_9: 5 ,
        l26_11: 10 ,
        l26_12: 5 ,
        l26_13: 5 ,
        l26_14: 10 ,
        l26_17: 10 ,
        l26_20: 10 ,
        l26_21: 10 ,
        l26_22: 10 ,
        l26_23: 5 ,
        l26_24: 5 , 
        l26_27: 5 , 

        l27_1: 8 ,
        l27_2: 8 ,
        l27_3: 12 ,
        l27_4: 12 ,
        l27_5: 7 ,
        l27_6: 12 ,
        l27_9: 12 ,
        l27_10: 7 ,
        l27_11: 7 ,
        l27_14: 11 ,
        l27_15: 4 ,
        l27_16: 15 ,
        l27_17: 15 ,
        l27_18: 12 ,
        l27_19: 10 ,
        l27_20: 10 ,
        l27_21: 20 ,
        l27_22: 20 ,
        l27_23: 13 ,
        l27_24: 12 ,
        l27_26: 8

    }


    init();

    function init() {
    try {
       var el = ems;
       nado = el.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode
    /*
    0 - cur place
    1 - view place
    2-10 - have move
    11 - gO
    12 - gV
    13 - gN
    14 - loc from move (only move)
    15 - last time move (only move)
    16 - all time move (only move)
    17 - ?
    18 - clan id
    19 - ?
    20 - ?
    */

    //+ отображение карты
        var vm = GM_getValue( "checkvm" ) ;
        if( vm == 1 ) {
            //ems.style.display = 'none' ; 	//старый формат
             document.getElementsByName('movie')[2].parentNode.parentNode.style.display = 'none';
        } else {
    //        ems.width = 500; 	// широкая карта, убрана в 1.16.4
        }
    //-

        // происходит передвижение
        if( pl[14] > 0 ) {
            div = document.createElement( 'div' );
            div.innerHTML = '<br><center><div id="hint_move">Пункт назначения: <b>' + locArr[pl[0]][lng] + '</b></center></div><br>' + coop ;
            nado.appendChild( div );
            $("hwmmm_options").addEventListener( "click", setting , false );

            var mTitle = document.title ;
            var start_time = new Date() ;
            update_time( start_time.getTime() , mTitle ) ;
        }
        // стоим в секторе
        else {
            nado.appendChild( dm ) ;
            $("hwmmm_options").addEventListener( "click", setting , false );
            for( l = 1 ; l < locArr.length; l++ ) {
                if(l!=25) {
                    var d = $( 'loc_' + l ) ;
                    d.parentNode.style.textAlign = 'center' ;
                    d.style.padding = '1px 3px' ;
                    d.style.fontSize = '11px' ;
                    d.parentNode.style.border = pl[1] == l ? '1px solid #00f' : '1px solid #abc' ;
                    // если текущий сектор
                    if( l == pl[0] ) {
                        d.style.fontWeight = 'bold' ;
                        d.parentNode.style.backgroundColor = 'FFF8DC' ;
                        if( pl[13] != 0 && l == pl[13] ) {
                            d.style.color = 'FF0000' ;
                        }
                        d.innerHTML = locArr[l][lng] ;
                    }
                    // если какой другой
                    else {
                        a = document.createElement( 'a' );
                        a.style.fontSize = '11px' ;
                        a.href = 'http://www.heroeswm.ru/move_sector.php?id='+l ;
                        // если задание Наёмников
                        if( pl[13] != 0 && l == pl[13] ) {
                            a.style.color = 'FF0000' ;
                        }
                        a.innerHTML = locArr[l][lng] ;
                        a.setAttribute( 'tZ' , l ) ;

                        a.addEventListener( "mouseover", viewPath , false );
                        a.addEventListener( "mouseout", hidePath , false );

                        a.title = locArr[l][lng] + ' (' + getTimeL( pl[0] , l , 0 ) + ')' ;
                        d.appendChild( a );
                    }

                    if( pl[13] == -1 && in_array( l , plgn ) ) {
                        b = document.createElement( 'b' );
                        b.style.color = '#00F' ;
                        b.innerHTML = ' X' ;
                        d.appendChild( b ) ;
                    }

                    if( GM_getValue( "checkvs" ) ) {
                        if( pl[1] != l ) {
                            a = document.createElement( 'a' );
                            a.href= 'http://www.heroeswm.ru/map.php?cx=' + locArr[l][1] + '&cy=' + locArr[l][2] ;
                            a.style.display = 'block' ;
                            a.style.width = '100%';
                            a.title = 'Осмотреть сектор '+locArr[l][lng] ;
                            vi = document.createElement( 'img' );
                            vi.src = "data:image/gif,GIF89a%10%00%10%00%D5%00%00B%40B%15%15%18((-PPUzz%7FHHJ%5D%5D_--.zz%7BWWX23%3BEHS%80%88%A2rx%8C%DA%DD%E7bj%80sx%87%88%8C%97%7D%85%98HO_%7D%85%97%88%8C%95psz%DC%DD%DF%D4%D5%D7x%7F%8C%2B-0%C2%DF%FF%DF%F4%FFMOPmop%EF%F1%F2%E7%F9%FF%EA%FD%FF%E7%FF%FF%13%15%15%E9%FF%FF%18%1A%1A%FA%FF%FFmoo%FC%FF%FF%FD%FF%FFZ%5B%5B%5D%5D%5B%40%3F%3F%FF%FF%FF%16%16%16%10%10%10%05%05%05%00%00%00%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%01%00%002%00%2C%00%00%00%00%10%00%10%00%00%06%5C%40%99pH%2C%12%13%01%8D%80e%24%02ZP%A8%A2)k%C8%A2%D1As%01Ma'%CDF%D4%14%7D4!-%94%A8%95%BAJ%9A%07P%8B%E4mm%2C%D4H(%CA%A9%AC%A82%05%19%0C%14%041*%17%80E0%1D%18%8AD%2F%06%89%8FB%25'%1F%94B.%08-%992%23%1E%9ECA%00%3B" ;
                            vi.style.border = '0px' ;
                            a.appendChild( vi ) ;
                            d.parentNode.appendChild( a ) ;
                        }
                    }
                }
            }
        }
                        } catch(e) {
                           alert(e)
                        }
    }

    function update_time( start , title ) {
        new_time=new Date();
        s=pl[15]-Math.round((new_time.getTime()-start)/1000.);
        m=0;h=0;
        if(s<0) {
        } else {
          if(s>59) {
            m=Math.floor(s/60);
            s=s-m*60;
          }
          if(m>59) { 
            h=Math.floor(m/60);
            m=m-h*60;
          }
          if(s<10) { s="0"+s; }
          if(m<10) { m="0"+m; }
    //        document.title=" ["+h+":"+m+":"+s+"] " + title;
            document.title=" ["+m+":"+s+"] " + title;
            setTimeout( function(){ update_time(start,title)},999);
        }
    }


    function setCheck(ch) {
        if( GM_getValue( ch ) && GM_getValue( ch ) == 1 )
            GM_setValue( ch , 0 );
        else
            GM_setValue( ch , 1 );
    }

    function setTransport(id) {
        $("transp"+transp).style.background="#F6F3EA";
        $("transp"+id).style.background="#0000ff";
        GM_setValue( "transport" , id );
        transp = id ;
    }

    function getTimeL( cz , mz , t ) {
    /*  cz	текущий сектор обсчёта
        mz	конечный сектор обсчёта
        t	сумма времени
    */
        // если прибыли в конечный пункт
        if( mz == cz ) {
            var myT = new Date(t*1000)
            myTs = myT.getSeconds()
            return myT.getMinutes() + ':' + ( myTs < 10 ? '0' : '' ) + myTs ;
        }

        var nz = 0; 		// следующий сектор, к которому надо действительно двигаться

        var kC = locArr[cz]; 	//координаты текущие
        if(kC == undefined) return 0;
        var kM = locArr[mz]; 	//координаты назначения

        id1 = eval( 'locP.l' + cz + '_' + mz ) //id исключение

        // если есть исключения, следующий сектор будет равен ид исключения
        if( id1 && id1 > 0 ) {
            nz = id1 ;
        }

        // если исключения, то переназначаем координаты назначения
        if( nz != 0 ) var kM = locArr[nz] ;

        tx = kM[1] > kC[1] ? 1 : ( kM[1] == kC[1] ? 0 : -1 ) ;
        ty = kM[2] > kC[2] ? 1 : ( kM[2] == kC[2] ? 0 : -1 ) ;
        nx = parseInt( kC[1] ) + tx ;
        ny = parseInt( kC[2] ) + ty ;

    //    t = ( ty == 0 || tx == 0 ) ? t + 120 : t + 169 ;
        t = ( ty == 0 || tx == 0 ) ? t + trtime[transp] : t + trtimed[transp] ;
        id = eval( 'locX.c' + nx + '_' + ny ) ;
    //    t = t + ' ' + id + '(' + nz + ')' ;

        return getTimeL( id , mz , t );
    }


    function viewPath() {
        mz = this.getAttribute( 'tz' ) ;

        path( pl[0] , mz ) ;
        function path( cz , mz ) {
            if ( mz == cz )	return ;
            var nz = 0; 			// следующий сектор, к которому надо действительно двигаться
            var kC = locArr[cz]; 		//координаты текущие
            var kM = locArr[mz]; 		//координаты назначения
            id1 = eval( 'locP.l' + cz + '_' + mz ) 	//ID исключение
            // если есть исключения, следующий сектор будет равен id исключения
            if( id1 && id1 > 0 ) {
                nz = id1 ;
            }

            // если исключения, то переназначаем координаты назначения
            if( nz != 0 ) var kM = locArr[nz] ;
            tx = kM[1] > kC[1] ? 1 : ( kM[1] == kC[1] ? 0 : -1 ) ;
            ty = kM[2] > kC[2] ? 1 : ( kM[2] == kC[2] ? 0 : -1 ) ;
            nx = parseInt( kC[1] ) + tx ;
            ny = parseInt( kC[2] ) + ty ;
            id = eval( 'locX.c' + nx + '_' + ny ) ;

            td = $('loc_'+id)
            td.parentNode.style.backgroundColor = 'F0E68C' ;
            road[road.length] = id ;
            path( id , mz );
        }
        return ;
    }

    function hidePath() {
        for( i = 0; i < road.length ; i ++ ) {
            $('loc_'+road[i]).parentNode.style.backgroundColor = 'DDD9CD' ;
        }
        road = new Array() ;
    }


    //+ закрытие форм
    function form_close() {
        bg = $('bgOverlay') ;
        bgc = $('bgCenter') ;
        if( bg ) {
            bg.style.display = bgc.style.display = 'none' ;
        }
    }
    //-


    //+ форма настроек
    function setting() {
        bg = $('bgOverlay') ;
        bgc = $('bgCenter') ;
        if( !bg ) {
            bg = document.createElement('div') ;
            bg.id = 'bgOverlay' ;
            document.body.appendChild( bg );
            bg.style.position = 'absolute' ;
            bg.style.left = '0';
            bg.style.width = '100%';
            bg.style.height = '100%';
            bg.style.background = "#000000";
            bg.style.opacity = "0.5";
            bg.addEventListener( "click", form_close , false );

            bgc = document.createElement('div') ;
            bgc.id = 'bgCenter' ;
            document.body.appendChild( bgc );
            bgc.style.position = 'absolute' ;
            bgc.style.width = '400px';
            bgc.style.background = "#F6F3EA";
            bgc.style.left = ( ( document.body.offsetWidth - 400 ) / 2 ) + 'px' ;
            bgc.style.zIndex = "1105";
        }

        bgc.innerHTML = '<div style="border:1px solid #abc;padding:5px;margin:2px;"><div style="float:right;border:1px solid #abc;width:15px;height:15px;text-align:center;cursor:pointer;" id="bt_close" title="Закрыть">x</div> <center><table> <tr><td><b>Настройки:</b></td></tr><tr><td><div><label style="cursor:pointer;"><input type="checkbox" id="id_check_vm"> Не отображать flash-карту</lable></div>' +
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_vs"> Отображать кнопки осмотра секторов</lable></div>' +
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_lng" title=""lng ru> Названия секторов по-русски</lable></div>' +
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gn"> Сдавать задания Гильдии Наёмников с дороги</lable></div>' +
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gv"> Автоматически вступать в бои Гильдии Рейнджеров</lable></div>' +
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gvn"> Заходить в Гильдию Рейнджеров</lable></div><br><div>Ваш транспорт (<a href="http://www.heroeswm.ru/shop.php?cat=transport">транспорт в магазине</a>):<br><table><tr><td style="padding:5px;cursor:pointer;" id="transp3"><img src="http://www.heroeswm.ru/i/transport/3.jpg"></td><td style="padding:5px;cursor:pointer;" id="transp4"><img src="http://www.heroeswm.ru/i/transport/4.jpg"></td><td style="padding:5px;cursor:pointer;" id="transp5"><img src="http://www.heroeswm.ru/i/transport/5.jpg"></td></tr></table></div></td></tr></table></center></div>' ;

        $("transp"+transp).style.background="#0000ff";
        $("transp3").addEventListener( "click", function(){setTransport(3)} , false );
        $("transp4").addEventListener( "click", function(){setTransport(4)} , false );
        $("transp5").addEventListener( "click", function(){setTransport(5)} , false );

        $("bt_close").addEventListener( "click", form_close , false );

        var check_gv = $('id_check_gv')
        check_gv.checked = GM_getValue( "checkgv" , 0 ) == 1 ? 'checked' : '' ;
        check_gv.addEventListener( "click", function(){setCheck('checkgv')} , false );

        var check_gvn = $('id_check_gvn')
        check_gvn.checked = GM_getValue( "checkgvn" , 0 ) == 1 ? 'checked' : '' ;
        check_gvn.addEventListener( "click", function(){setCheck('checkgvn')} , false );

        var check_gn = $('id_check_gn')
        check_gn.checked = GM_getValue( "checkgn" , 0 ) == 1 ? 'checked' : '' ;
        check_gn.addEventListener( "click", function(){setCheck('checkgn')} , false );

        var check_vm = $('id_check_vm')
        check_vm.checked = GM_getValue( "checkvm" , 0 ) == 1 ? 'checked' : '' ;
        check_vm.addEventListener( "click", function(){setCheck('checkvm')} , false );

        var check_vs = $('id_check_vs')
        check_vs.checked = GM_getValue( "checkvs" , 0 ) == 1 ? 'checked' : '' ;
        check_vs.addEventListener( "click", function(){setCheck('checkvs')} , false );

        var check_lng = $('id_check_lng') ;
        check_lng.checked = check_lng_v == 1 ? 'checked' : '' ;
        check_lng.addEventListener( "click", function(){setCheck('checklng')} , false );

        bg.style.top = (-document.body.scrollTop)+'px';
        bgc.style.top = ( document.body.scrollTop + 100 ) + 'px';
        bg.style.display = bgc.style.display = 'block' ;
    }
    //-


    function getI( xpath ) {
        return document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
    }

    function $( id ) { return document.getElementById( id ); }

    function in_array(needle, haystack, strict) {
        var found = false, key, strict = !!strict;
        for (key in haystack) {
            if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
                found = true;
                break;
            }
        }
        return found;
    }

})();