Ikariam Açılan Menüler V.1.7

By Celal ÇİFÇİ Last update Aug 7, 2010 — Installed 251 times.
// ==UserScript==
// @name            Ikariam Açılan Menüler V.1.7
// @namespace       ikariam
// @author          empty_soul
// @version         1.7
// @history         1.7 Added Script Options, and Indonesian, Spanish, and Netherlands translations. Thank You: Rada974, Andrejs, Black Cero, Admiraal Tromp
// @history         1.6.1 Fixed bug with researches over 1 million points
// @history         1.6 Made all menus dynamic width, cleaned up CSS
// @history         1.5.2 Moved my GM object and the hoverIntent plugin to external scripts
// @history         1.5.1 Corrected German Translation
// @history         1.5 Added open menu checking to prevent multiple open menus
// @history         1.4.1 Fixed Research bug, dynamic width dropdown (thanks randalph)
// @history         1.4 Added Troop Movements and Combat Reports count fetching on hover
// @history         1.3 Added jQuery hoverIntent and fadeout, fixed menu not hiding on mouseOut of the top, corrected French Translation
// @history         1.2.5 Added Greek translation
// @history         1.2.4 Cleaned up inbox/outbox count call checking
// @history         1.2.3 French Lang fix
// @history         1.2.2 Widened research box, fixed multiple research calls on dropdown
// @history         1.2.1 Added version branding with link to check for updates
// @history         1.2 Added Reasearch dropdown with percent complete of each research
// @history         1.1 Added Cities dropdown for trade routes.
// @history         1.0 Cleaned CSS, Cleaned Code, added Millitary dropdown menu, Changed Script Title
// @description     (WWW.İKARİAM.FORUMM.BİZ)
// @homepage        http://kkhweb.com/
// @include         http://s*.ikariam.tld/*
// @require         http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js
// @require         http://kkhweb.com/web_share/greasemonkey/hoverIntent.min.js
// @require         http://userscripts.org/scripts/source/57756.user.js
// @require         http://userscripts.org/scripts/source/57377.user.js
// @require         http://userscripts.org/scripts/source/62718.user.js
// @require         http://userscripts.org/scripts/source/72585.user.js
// @resource        ajaxLoadGif http://kkhweb.com/web_share/greasemonkey/ajaxLoadGif.gif
// ==/UserScript==

GM.css(' \
    a:hover {cursor:pointer;} \
    .ajaxLoadGif {margin-left:25px; padding-top:15px; padding-bottom:20px;} \
    #menuC, #menuM, #menuR, #menuD {display:none; background-color:#FDE5AC; border:1px solid #9D836A; text-align:left; \
        width:auto; height:auto; margin-left:5px; margin-top:-2px; position:relative; z-index:10500;} \
    #menuC table, #menuM table, #menuR table, #menuD table {width:100%;} \
    #menuD td:hover, #menuM td:hover, #menuC td:hover, #menuR td:hover {background-color:#FEF6BD;} \
    #menuD tr, #menuM tr, #menuC tr, #menuR tr  {border-bottom:1px solid #9D836A;} \
    #menuC a, #menuM a, #menuR a, #menuD a {height:12px; width:100%; margin-left:5px; margin-right:10px; padding-bottom:3px; padding-top:2px;} \
');

var DDM = {
    //Vars
    usoNum:           69864,
    curVer:          '1.7',
    language:        new Array(),
    autoLang:        '',
    userLang:        '',
    cChecked:        false,
    rChecked:        false,
    mChecked:        false,
    tChecked:        false,
    hiSensitivity:   3, // hoverIntent - number = sensitivity threshold (must be 1 or higher)
    hiInterval:      200, // hoverIntent - number = milliseconds for onMouseOver polling interval
    hiTimeout:       0,
    fadeOut:         200, // Menu fadeout speed - number = milliseconds
    menuOpen:        false,
    openMenu:        '',
    currentView:     '',

    //Functions
    run: function(debug) {
        if(debug === true) {
            unsafeWindow.DDM = this;
            unsafeWindow.DDM.init();
        } else {
            this.init();
        }
    },
    strips:function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/,''); },
    init:function(){
        IkaTools.init();
        IkaTools.addOptionsLink('DropDown Menus');
        ScriptUpdater.check(this.usoNum, this.curVer);
        this.scriptOptionsConfig();
        this.loadOptions();

        this.renderCities();
        this.renderMilitary();
        this.renderResearch();
        this.renderDiplomacy();
    },
    loadOptions : function() {
        this.server = IkaTools.getDomain();
        this.autoLang = this.server.split('.')[1];
        this.currentView = IkaTools.getView();

        if(Config.get('userLang') == 'unfound') {
            GM.value.set('dd.userLang', 'en');
            this.userLang = Config.get('userLang');
        } else {
            this.userLang = Config.get('userLang');
        }

        if(this.autoLang == this.userLang) {
            this.language = this.loadLang(this.autoLang);
        } else {
            this.language = this.loadLang(this.userLang);
        }
    },
    scriptOptionsConfig : function(){
        Config.scriptName = 'DropDown Menus' + ' v' + this.curVer;
        Config.prefix = 'dd.';
        Config.init({
            'General':{
                html:'<p>Customize the DropDown Menu script with these options.<br/>Press escape to close without saving.</p>',
                fields:{
                    'userLang' : {
                        type : 'select',
                        value : 'en',
                        label : 'Available Languages',
                        options : {
                            'English' : 'en',
                            'Espa&ntilde;ol' : 'es',
                            'Fran&ccedil;ais' : 'fr',
                            'Deutsch' : 'de',
                            'Nederlands' : 'nl',
                            'Latvian' : 'lv',
                            'Indonesia' : 'id'
                        }
                    }
                }
            },
            "About" : {
                html : '<p><a href="http://userscripts.org/scripts/show/' +this.usoNum + '" target="_blank" style="font-weight:bold !important;">' +
                    'DropDown Menus</a> by <a href="http://userscripts.org/users/emptysoul12" target="_blank">Empty_Soul</a></p>' +
                    '<p>This script makes it simple to visit the different tabs from the advisors simple!<br>Just hover over the title for a DropDown Menu.</p>'
            }
        });

        Config.preloadData();
    },
    fetchTransports:function(){
        if(this.tChecked == false) {
            if(this.transportsEnRoute() == true){
                GM.ajax({
                    method: 'GET',
                    url: 'http://' + DDM.server + '/index.php?view=merchantNavy',
                    headers: GM.ajaxHeaders,
                    onload: function(data) {
                        DDM.tChecked = true;

                        var transports = $(data.responseText).find('#mainview div.contentBox div.content:eq(1) table').html();
                        var transCount = '(' + parseInt(1+ $(transports).find('tbody').children('tr:even').size()) + ')';

                        $('#DDtrans').text(DDM.language.transports + ' - ' + transCount);
                    }
                });
            }
        }
    },
    fetchMsgCount:function(){
        if(this.cChecked == false) {
            GM.ajax({
                method: 'GET',
                url: 'http://' + DDM.server + '/index.php?view=diplomacyAdvisor',
                headers: GM.ajaxHeaders,
                onload: function(data) {
                    DDM.cChecked = true;

                    var tabs = $(data.responseText).find('#tabz').html();
                    var inboxNum = '(' + $(tabs).find('a:eq(0) em').text().split('(')[1];
                    var outboxNum = '(' + $(tabs).find('a:eq(1) em').text().split('(')[1];

                    $('#DDinbox').text(DDM.language.inbox + ' - ' + inboxNum);
                    $('#DDoutbox').text(DDM.language.outbox + ' - ' + outboxNum);
                }
            });
        }
    },
    fetchCRsCount:function(){
        if(this.mChecked == false) {
            GM.ajax({
                method: 'GET',
                url: 'http://' + DDM.server + '/index.php?view=militaryAdvisorMilitaryMovements',
                headers: GM.ajaxHeaders,
                onload: function(data) {
                    DDM.mChecked = true;

                    var tabs = $(data.responseText).find('#mainview').html();
                    var movementsNum = '(' + $(tabs).find('a:eq(0) em').text().split('(')[1];
                    var crsNum = '(' + $(tabs).find('a:eq(1) em').text().split('(')[1];

                    $('#DDtroops').text(DDM.language.troops + ' - ' + movementsNum);
                    $('#DDcrs').text(DDM.language.crs + ' - ' + crsNum);
                }
            });
        }
    },
    fetchResearch:function(){
        if(this.rChecked == false) {
            GM.ajax({
                method: 'GET',
                url: 'http://' + DDM.server + '/index.php?view=researchAdvisor',
                headers: GM.ajaxHeaders,
                onreadystatechange:function(){
                    $('#menuR table').html(GM.ajaxLoadGif);
                },
                onload: function(data) {
                    DDM.rChecked = true;

                    var c = 0;
                    var research = '';
                    var RP = parseInt($(data.responseText).find('ul.researchLeftMenu li.points').text().split(':')[1].replace(/,|\./g, ''));

                    $(data.responseText).find('#currentResearch div:first ul li[class*="researchType"]').each(function(){
                        var title = DDM.strips($(this).find('div h4 a').text());
                        var cost = parseInt($(this).find('div.costs ul.resources li.researchPoints').text().replace(/,|\./g, ''));
                        var percentComplete;

                        if(((RP / cost) * 100) > 100) { percentComplete = '100%'; }
                        else { percentComplete = parseInt((RP / cost) * 100) + '%'; }

                        research += '<tr><td><a id="DDres' + c++ + '">' + title + ' - ' + percentComplete + '</a></td></tr>';
                    });

                    $('#menuR table').html(research);
                }
            });
        }
    },
    transportsEnRoute:function(){
        var shipNums = $('#globalResources ul li:first a span:eq(1)').text();
        var totalShips = parseInt(shipNums.split('(')[1].replace(')',''));
        var availShips = parseInt(shipNums.split('(')[0]);
        
        if(totalShips != availShips){
            return true;
        } else {
            return false;
        }
    },
    renderCities:function(){
        var newsRow = '<tr><td><a id="DDnews" href="?view=tradeAdvisor">' +
            this.language.news + '</a></td></tr>';
        var routesRow = '<tr><td><a id="DDroutes" href="?view=tradeAdvisorTradeRoute">' +
            this.language.routes + '</a></td></tr>';
//        var transRow = '<tr><td><a id="DDtrans" href="?view=merchantNavy">' +
//            this.language.transports + ' - (?)</a></td></tr>';
var transRow = '';
        var brandRow = '<tr><td><a id="DDbrand" href="#">Menu v' + this.curVer + '</a></td></tr>';

        var menuC = $('<div id="menuC"></div>');
            menuC.html('<table>' + newsRow + routesRow + transRow + brandRow + '</table>');
        $('#advCities').append(menuC);

        $('#DDbrand').bind('click', function(){
           ScriptUpdater.forceNotice(DDM.usNum, DDM.curVer);
        });

        $('#advCities a span').hoverIntent({
            sensitivity: DDM.hiSensitivity,
            interval: DDM.hiInterval,
            timeout: DDM.hiTimeout,
            over:function(){
                if(DDM.menuOpen == true) {
                    $(DDM.openMenu).hide();
                }
                DDM.openMenu = '#menuC';
                //DDM.fetchTransports();
                $(DDM.openMenu).show();
                DDM.menuOpen = true;
            },
            out:function(){
                $('#menuC').bind('mouseleave', function(){
                    $(this).fadeOut(DDM.fadeOut);
                    DDM.menuOpen = false;
                })
            }
        });
    },
    renderMilitary:function(){
         var troopsRow = '<tr><td><a id="DDtroops" href="?view=militaryAdvisorMilitaryMovements">' +
            this.language.troops + ' - (?)</a></td></tr>';
        var crRow = '<tr><td><a id="DDcrs" href="?view=militaryAdvisorCombatReports">' +
            this.language.crs + ' - (?)</a></td></tr>';
        var archiveRow = '<tr><td><a id="DDarchives" href="?view=militaryAdvisorCombatReportsArchive">' +
            this.language.archives + '</a></td></tr>';

        var menuM = $('<div id="menuM"></div>');
            menuM.html('<table>' + troopsRow + crRow + archiveRow + '</table>');
        $('#advMilitary').append(menuM);

        $('#advMilitary a span').hoverIntent({
            sensitivity: DDM.hiSensitivity,
            interval: DDM.hiInterval,
            timeout: DDM.hiTimeout,
            over:function(){
                if(DDM.menuOpen == true) {
                    $(DDM.openMenu).hide();
                }
                DDM.openMenu = '#menuM';
                DDM.fetchCRsCount();
                $(DDM.openMenu).show();
                DDM.menuOpen = true;
            },
            out:function(){
                $('#menuM').bind('mouseleave', function(){
                    $(this).fadeOut(DDM.fadeOut);
                })
            }
        });
    },
    renderResearch:function(){
        var menuR = $('<div id="menuR"><table></table></div>');
        $('#advResearch').append(menuR);

        $('#advResearch a span').hoverIntent({
            sensitivity: DDM.hiSensitivity,
            interval: DDM.hiInterval,
            timeout: DDM.hiTimeout,
            over:function(){
                if(DDM.menuOpen == true) {
                    $(DDM.openMenu).hide();
                }
                DDM.openMenu = '#menuR';
                DDM.fetchResearch();
                $(DDM.openMenu).show();
                DDM.menuOpen = true;
            },
            out:function(){
                $('#menuR').bind('mouseleave', function(){
                    $(this).fadeOut(DDM.fadeOut);
                })
            }
        });
    },
    renderDiplomacy:function(){
        var inboxRow = '<tr><td><a id="DDinbox" href="?view=diplomacyAdvisor">' +
            this.language.inbox + ' - (?)</a></td></tr>';
        var outboxRow = '<tr><td><a id="DDoutbox" href="?view=diplomacyAdvisorOutBox">' +
            this.language.outbox + ' - (?)</a></td></tr>';
        var treatyRow = '<tr><td><a href="?view=diplomacyAdvisorTreaty">' +
            this.language.treaty + '</a></td></tr>';
        var allianceRow = '<tr><td><a href="?view=diplomacyAdvisorAlly">' +
            this.language.alliance + '</a></td></tr>';

        var menu = $('<div id="menuD"></div>');
            menu.html('<table>' + inboxRow + outboxRow + treatyRow + allianceRow + '</table>');
        $('#advDiplomacy').append(menu);

        $('#advDiplomacy a span').hoverIntent({
            sensitivity: DDM.hiSensitivity,
            interval: DDM.hiInterval,
            timeout: DDM.hiTimeout,
            over:function(){
                if(DDM.menuOpen == true) {
                    $(DDM.openMenu).hide();
                }
                DDM.openMenu = '#menuD';
                DDM.fetchMsgCount();
                $(DDM.openMenu).show();
                DDM.menuOpen = true;
            },
            out:function(){
                $('#menuD').bind('mouseleave', function(){
                    $(this).fadeOut(DDM.fadeOut);
                })
            }
        });
    },
    loadLang:function(loc) {
        var lang = [];

        switch(loc) {
            default:
            case 'com':
            case 'org':
                lang.name = 'English';
                lang.inbox = 'Inbox';
                lang.outbox = 'Outbox';
                lang.treaty = 'Treaty';
                lang.alliance = 'Alliance';
                lang.troops = 'Troop Movements';
                lang.crs = 'Combat Reports';
                lang.archives = 'Archives';
                lang.news = 'News';
                lang.routes = 'Routes';
                lang.transports = 'Transports';
            break;

            case 'de':
            case 'cu':
                lang.name = 'German';
                lang.inbox = 'Posteingang';
                lang.outbox = 'Postausgang';
                lang.treaty = 'Abkommen';
                lang.alliance = 'Allianz';
                lang.troops = 'Truppen';
                lang.crs = 'KBs';
                lang.archives = 'Archiv';
                lang.news = 'News';
                lang.routes = 'Routen';
                lang.transports = 'Transports';
            break;

            case 'tr':
                lang.name = 'Turkish';
                lang.inbox = 'Gelen';
                lang.outbox = 'Giden';
                lang.treaty = 'Anlasma';
                lang.alliance = 'Ittifak';
                lang.troops = 'Asker';
                lang.crs = 'CRs';
                lang.archives = 'Ar&#x015F;ivler';
                lang.news = 'Haber';
                lang.routes = 'Rotalar';
                lang.transports = 'Transports';
            break;

            case 'fr':
                lang.name = 'French';
                lang.inbox = 'Reçus';
                lang.outbox = 'Envoyés;';
                lang.treaty = 'Accords';
                lang.alliance = 'Alliance';
                lang.troops = 'Troupes';
                lang.archives = 'Archives';
                lang.news = 'Nouvelles';
                lang.routes = 'Itinéraires';
                lang.transports = 'Transports';
            break;

            case 'es':
            case 've':
                lang.name = 'Spanish';
                lang.inbox = 'Buzon de entrada';
                lang.outbox = 'Buzon de salida';
                lang.treaty = 'Acuerdos';
                lang.alliance = 'Alianza';
                lang.troops = 'Tropas';
                lang.archives = 'Archivos';
                lang.news = 'Novedades';
                lang.routes = 'Rutas';
            break;

            case 'lv':
                lang.name = 'Latvian';
                lang.inbox = 'Ien\u0101ko\u0161ie';
                lang.outbox = 'Izejo\u0161ie';
                lang.treaty = 'L\u012bgums';
                lang.alliance = 'Alianse';
                lang.troops = 'Kareivji';
                lang.archives = 'Arh\u012bvs';
                lang.news = 'Zi\u0146as';
                lang.routes = 'Mar\u0161ruts';
            break;

            case 'nl':
                lang.name = 'Dutch';
                lang.inbox = 'Postvak IN';
                lang.outbox = 'Postvak UIT';
                lang.treaty = 'Verdragen';
                lang.alliance = 'Alliantie';
                lang.troops = 'Troepenbeweging';
                lang.crs = 'Gevechtsrapporten';
                lang.archives = 'Archief';
                lang.news = 'Nieuws';
                lang.routes = 'Handelsroutes';
                lang.transports = 'Transporten';
            break;

            case 'id':
                lang.name = 'Indonesia';
                lang.inbox = 'Kotak Masuk';
                lang.outbox = 'Kotak Keluar';
                lang.treaty = 'Perjanjian';
                lang.alliance = 'Aliansi';
                lang.troops = 'Pasukan';
                lang.archives = 'Arsip';
                lang.news = 'Berita';
                lang.routes = 'Perjalanan';
            break;
        }
    return lang;
    }
};


DDM.run();