Ikariam chat links

By iknietjij Last update May 24, 2009 — Installed 8,465 times.

There are 8 previous versions of this script.

// Ikariam chat links
// version 1.01
// Copyright (c) 2009, iknietjij
//
// ==UserScript==
// @name          Ikariam chat links
// @namespace     http://ikariam.org/
// @description   Adding chat links to Ikariam pages
// @include       http://s*.ikariam.*/*
// @version       1.01
// ==/UserScript==

// Get the server info for multi-server 
var host = top.location.host.split(".");
var domain = host[host.length -1];
var server = host[0];

// Get the chat URL from the saved info, otherwise use the default ikariam info
var chaturl = GM_getValue(domain + "." + server + ".chaturl", 0);
if (chaturl == '') {
  chaturl = "http://board.ikariam.org/index.php?page=IrcChat";
}

// Get the nickname if possible, otherwise the saved nickname
var nickname;
if (document.getElementById('options_userData')) {
  if (document.getElementById('options_userData').getElementsByTagName('table')[0].getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('input')[0]) {
    var nickElement = document.getElementById('options_userData').getElementsByTagName('table')[0].getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('input')[0];
    if (nickElement != null) {
      nickname = nickElement.value;
      GM_setValue(domain + "." + server + ".nick",nickname);
    }
    else {
      nickname = GM_getValue(domain + "." + server + ".nick", 0);
    }
  }
  else {
    nickname = GM_getValue(domain + "." + server + ".nick", 0);
  }
}
else {
  nickname = GM_getValue(domain + "." + server + ".nick", 0);
}
if (nickname) {
  nickname = nickname.replace(/\s+/gi, '');
}
else {
  nickname = '';
}

// Generate the link
var link = chaturl;
if (nickname != '') {
  link =  chaturl + '&nick=' + nickname + '&alt=' + nickname + '_';
}

// Add another link to the navigation bar (chat link)
var navigationLinks = document.getElementById('GF_toolbar').getElementsByTagName('ul')[0].getElementsByTagName('li')[5];
if (navigationLinks) {
  var spanelement = document.createElement("span");
  spanelement.class = 'textLabel';
  spanelement.appendChild(document.createTextNode("Chat"));

  var aelement = document.createElement("a");
	    aelement.href = link;
	    aelement.title = 'Chat!';
	    aelement.target = '_blank';
	    aelement.appendChild(spanelement);
  
  var chatlink = document.createElement("li");
  chatlink.class = 'chat';
  chatlink.appendChild(aelement);

  navigationLinks.parentNode.insertBefore(chatlink, navigationLinks.nextSibling);
}

// Add the chat link to the alliance page
var textTableRow, textTablecolumn1, textTablecolumn2, aelement;
var memberElement;
if (document.getElementById('allyinfo') != null) {
    memberElement = document.getElementById('allyinfo').getElementsByTagName('tbody')[0].getElementsByTagName('tr')[5];
    textTableRow = document.createElement('tr');

    textTablecolumn1 = document.createElement('td');
    textTablecolumn1.appendChild(document.createTextNode("Chat:"));
    textTableRow.appendChild(textTablecolumn1);
    
    aelement = document.createElement("a");
    aelement.href = link;
    aelement.title = 'Chat!';
    aelement.target = '_blank';
    aelement.appendChild(document.createTextNode("Chat"));
    
    textTablecolumn2 = document.createElement('td');
    textTablecolumn2.appendChild(aelement);
    textTableRow.appendChild(textTablecolumn2);
}
else {
  if (document.getElementById('embassy') != null) {
    memberElement = document.getElementById('mainview').getElementsByTagName('div')[1].getElementsByTagName('div')[0].getElementsByTagName('table')[0].getElementsByTagName('tr')[0];

    textTableRow = document.createElement('tr');

    textTablecolumn1 = document.createElement('td');
    textTablecolumn1.class = 'desc';
    textTablecolumn1.title = 'Chat';
    textTablecolumn1.appendChild(document.createTextNode("Chat:"));
    textTableRow.appendChild(textTablecolumn1);
    
    aelement = document.createElement("a");
    aelement.href = link;
    aelement.title = 'Chat';
    aelement.target = '_blank';
    aelement.appendChild(document.createTextNode("Chat"));
    
    textTablecolumn2 = document.createElement('td');
    textTablecolumn2.appendChild(aelement);
    textTablecolumn2.title = 'Chat!';
    textTableRow.appendChild(textTablecolumn2);
  }
}
if (memberElement) {
    memberElement.parentNode.insertBefore(textTableRow, memberElement.nextSibbling);
}

// Add the chat url part to the options.
var page = document.getElementsByTagName('body')[0].id;
if (page == 'options') {
var HTMLtext = '<div class="contentBox01h">' +
                    '<h3 class="header">Chat links settings</h3>' +
                    '<p>With the chat links script, you can add a chat link to the menu on top, as well as the alliance page.</p>' +
                    '<div class="content">' +
                        '<table cellpadding="0" cellspacing="0"><tbody>' +
                            '<tr>' +
                                '<th>Chat url</th>' +
                                '<td><input class="textfield" id="chaturl_url" name="chaturl_url" size="30" value="' + chaturl + '" type="text"></td>' +
                            '</tr>' +
                        '</tbody></table>' +
                        '<div class="centerButton">' + 
                            '<input id="show_chatlinks_savesettings" onclick="saveChatlinkSettings()" value="Save settings" class="button" type="button">' + 
                       '</div>' +
                    '</div>' + 
                    '<div class="footer"></div>' +
                '</div>';

    var settingsDialog = document.createElement("div");
    settingsDialog.innerHTML = HTMLtext;
    document.getElementById("mainview").insertBefore(settingsDialog, document.getElementById("vacationMode"));
    
    unsafeWindow.saveChatlinkSettings = function() {
      var newURL = document.getElementById("chaturl_url").value;
      window.setTimeout(GM_setValue, 0, domain + "." + server + ".chaturl", newURL);
        window.location.replace(window.location);
    };
}