There are 21 previous versions of this script.
the source is over 100KB, syntax highlighting in the browser is too slow
// ==UserScript==
// @name DS Duke & Forum Assistant
// @version 3.0.7
// @author Samuel Essig (http://c1b1.de)
// @description DS 8.0 Erweiterung und Unterstützung für Stammesführer und normale Member in der Mitgliederliste und im Forum von Die Stämme
// @namespace c1b1.de
// @homepage http://c1b1.de
// @copyright 2008-2011, Samuel Essig (http://c1b1.de)
// @license GNU General Public License (GPL)
// @include http://*.die-staemme.de/forum.php*
// @include http://www.die-staemme.de/redir.php*
// @include http://*.die-staemme.de/game.php*
// @exclude http://forum.die-staemme.de/*
// @exclude http://*.die-staemme.de/*t=*
// @icon http://www.die-staemme.de/favicon.ico
// ==/UserScript==
function ds_duke_forum() {
/*
DS Duke & Forum Assistant
############## Distribution Information ##############
All content by Samuel Essig c1b1.de
Please do not distribute this script without this logo.
2008-2011
See license information below
######################## Logo ########################
___ __ ___ __
_____ < / / /_ < / ____/ / ___
/ ___/ / / / __ \ / / / __ / / _ \
/ /__ / / / /_/ / / / _ / /_/ / / __/
\___/ /_/ /_.___/ /_/ (_) \__,_/ \___/
######################################################
For further information on translations of
scripts please contact me!
If you have any questions, comments,
ideas, etc, feel free to contact me
I will do my best to respond.
mail:info@c1b1.de
skype:c1b1_se
http://c1b1.de
####################### License ######################
Shared under the GNU General Public License Version 3 (GPL):
http://www.gnu.org/licenses/gpl-3.0.html
######################################################
Uploaded @ http://userscripts.org/scripts/show/40049
DS Forum Thread @ http://forum.die-staemme.de/showthread.php?t=95452
Google Code @ http://code.google.com/p/ds-duke-and-forum-assistant/
######################################################
Ab Version 2.6 funktioniert dieses Script in Verbindung mit DS - Mitglieder sortieren von Roman S. (Zombie74)
Thread: http://forum.die-staemme.de/showthread.php?t=101782
Script: http://userscripts.org/scripts/show/41120
Vorraussetzungen:
- DS - Mitglieder sortieren ab Version: 1.0.7
- DS Duke & Forum Assistant ab Version 2.6
- "DS Duke & Forum Assistant" muss in der Greasemonkey-Verwaltung unterhalb von "DS - Mitglieder sortieren" stehen
(die Scripte lassen sich in der GM-Verwaltung verschieben)
- maximal 98 Stammesmitglieder
Farben in der Mitgliederliste aktualisieren, da sie beim Mouseover von DS - Mitglieder sortieren gelöscht werden.
(2 empfohlen)
######################################################
Ab Version 3.0 funktioniert dieses Script in Verbindung mit einem Server
Dadurch lassen sich die Daten mit anderen Stammesführern teilen.
Weitere Infos im Forum:
http://forum.die-staemme.de/showthread.php?t=95452
*/
const updateAllyMemberPageColours_interval = 2; // Sekunden
// ########################################## Language Strings: ################
// Remove Language Objects that you don't need to save memory!
const text = {
'de' : {
'_name' : 'DS Duke & Forum Assistant',
'_author' : 'C1B1SE',
'_contact' : 'mail:info@c1b1.de',
'_support' : 'http://forum.die-staemme.de/showthread.php?t=95452',
'_self' : 'http://userscripts.org/scripts/show/40049' ,
'alert_programmInited' : 'DS Duke & Forum Assistant ist jetzt initialisiert',
'label_name' : 'Name',
'label_colour' : 'Farbe',
'label_warnings' : 'Verwarnungen',
'label_notes' : 'Notizen',
'label_action' : 'Aktion',
'label_details' : 'Details',
'label_totalWarnings' : 'Verwarnungen gesamt:',
'label_average' : String.fromCharCode('0216') + ' Durchschnitt:',
'label_DukeInfo' : 'Duke Info',
'label_noReasonAvailable' : 'kein Grund angegeben',
'label_editNotes' : String.fromCharCode('0187') + ' Notizen bearbeiten',
'label_editColour' : String.fromCharCode('0187') + ' Farbe ändern',
'label_reprimand' : String.fromCharCode('0187') + ' Verwarnen',
'label_repealWarning' : String.fromCharCode('0187') + ' Verwarnung aufheben',
'label_infoAboutPlayer' : 'Informationen zum Spieler',
'label_playerMenu' : 'Spielermenü',
'label_close' : 'Schließen',
'label_cancel' : 'Abbrechen',
'label_save' : 'Speichern',
'label_delete' : 'Löschen',
'label_finished' : 'Fertig!',
'label_colourInForum' : 'Farbe im Forum',
'label_editYourNotes' : 'Bearbeite deine Notizen',
'label_editNotes_nosymbol' : 'Notizen bearbeiten',
'label_editColour_nosymbol' : 'Farbe bearbeiten',
'label_repealWarning_nosymbol' : 'Verwarnung aufheben',
'label_editForumColourOfThePlayer' : 'Bearbeite die Farbe, die im Forum diesem Spieler zugewiesen wird',
'label_currentColour' : 'Aktuelle Farbe:',
'label_newColourValueInHEX' : 'Neu (HEX-Wert):',
'alert_successfullySaved' : 'Gespeichert!',
'alert_shouldHeBeReprimanded' : 'Gib einen Grund für die Verwarnung von %player% an:',
'label_chooseTheWarningToRemove' : 'Wähle die zu löschende Verwarnung aus',
'alert_reallyDeleteTheWarning' : 'Soll die Verwarnung wirklich enfernt werden?',
'label_forceSync' : 'Jetzt Synchronisieren...',
'label_setupSync' : 'Synchronisierung einrichten',
'label_backups' : 'Backups',
'label_settings' : 'Einstellungen',
'label_colourThreads' : 'Threads kolorieren',
'label_off' : 'Aus',
'label_textbox' : 'Textbox',
'label_title' : 'Titel',
'label_replaceSmilies' : 'Smilies ersetzen',
'label_maxFontsize' : 'Maximale Schriftgröße',
'label_maxImageSize' : 'Maximale Bildgröße',
'label_inBrackets_widthXheight' : '(Breite x Höhe)',
'label_dukeAssistantActivated' : 'Stammesführer aktiviert',
'label_inBrackets_memberlist' : '(Memberliste)',
'label_synchronizingWithRemoteServer' : 'Synchronisierung mit Server',
'label_currentSyncServerURL' : 'Aktuelle URL:',
'label_generalSettings' : 'Allgemeine Einstellungen',
'label_jsonDownload' : 'JSON Download',
'label_exportData' : 'Daten exportieren',
'label_doImport' : 'Importieren',
'label_functionOnlyForDeveloper' : 'Diese Funktion ist nur für den Entwickler ',
'label_import' : 'Import:',
'label_export' : 'Export:',
'label_NumberOfRecords' : 'Datensätze',
'label_aboutX' : 'ca.',
'label_wrongInputCode' : 'Der eingegebene Code ist weder korrekter XML noch JSON Code.',
'label_import_export' : 'Export/Import',
'label_syncData' : 'Manuelle Synchronisierung',
'label_sendData' : 'Senden',
'label_syncLog' : 'Synchronisierungsereignisse:',
'label_syncProgress' : 'Automatische Synchronisierung',
'label_syncInProgressDoNotQuit' : 'Daten werden synchronisiert! Bitte die Seite nicht verlassen.',
'label_factory_settings' : 'Werkseinstellungen',
'alert_resetToFactorySettings' : 'Soll das Script wirklich auf Standardeinstellungen zurückgesetzt werden?',
'alert_reallyReset' : 'Letzte Möglichkeit das Zurücksetzen zu stoppen.\n\nZurücksetzen?',
'label_aboutMe' : 'Über DS Duke & Forum Assistant',
'alert_aboutMeString' : 'DS Duke & Forum Assistant\n(Version 3)\n\n(c) by C1B1SE 2008-2011\n\n\tinfo@c1b1.de\n\thttp://c1b1.de\n\nDo not republish, use in other scripts, change or reproduce this code\nor a part/parts of this code without permission from C1B1SE\n\nThis script may be forbidden in TribalWars or DieStämme.\nPlease look in the respective forum for further information!',
'label_scaledFontSizeDownFromTo' : 'Schriftgröße von %from% auf %to% reduziert',
'label_scaledImage' : 'Bildgröße reduziert. Klicken für Orginalgröße',
'ingameString_authorWrote_aboveAquote' : ' hat folgendes geschrieben:',
'label_open' : 'Öffnen',
'label_edit' : 'Bearbeiten',
'label_newMessage' : 'Nachricht schreiben',
'label_rank' : 'Ranglisten:',
'label_player' : 'Spieler',
'label_continent' : 'Kontinent',
'label_oda' : 'Besiegte Gegner als Angreifer',
'label_odd' : 'Besiegte Gegner als Verteidiger',
'label_od_total' : 'Besiegte Gegner insgesamt',
'label_withdrawAllInvitations' : 'Alle Einladungen zurückziehen',
'alert_reallyWithdrawAllInvitations' : 'Wirklich alle Einladungen zurückziehen?',
'alert_unsavedSettingsAreLostWhenYouExitNow' : 'Alle ungespeicherten Änderungen gehen verloren\nWirklich abbrechen?',
'label_extras' : 'Extras',
'label_toolPages' : 'Toolseiten',
'label_TWPlus' : 'TWPlus',
'label_DSReal' : 'DS Real',
'label_myWebtool' : 'My-WebTool',
'label_staemmeStatistik' : 'Staemme-Statistik',
'label_pushThread' : 'Thread pushen',
'label_syncSettings' : 'Einstellungen für die Synchronisierung der Daten mit einem Server um die Daten mit anderen Stammesmitgliedern zu teilen.',
'label_yourCode' : 'Dein Synchronisierungscode:',
'label_yourCodeIllustration' : 'Mit dem Synchronisierungscode wird sichergestellt, dass keine Unbefugten auf die Daten zugreifen. Du erhälst ihn vom Stammesführer oder der Person, die für den Server verantwortlich ist.',
'alert_outdatedSyncCode' : 'Dein Synchronisierungscode oder dein Passwort funktionieren nicht mehr!\n\nDas automatische Synchronisieren wurde ausgeschaltet.\n\nSchaue auf der Homepage deinen Synchronisierungscode nach, oder frage deinen Stammesführer nach einem neuen Aktivierungslink.\n\nIm folgenden Fenster erscheinen Informationen zum Fehler.\nDu kannst diese an den Entwickler weiterleiten, wenn du weißt, dass der Synchronisierungscode oder dein Passwort nicht geändert wurden.',
'alert_errorsInNextWindow' : 'Im folgenden Fenster erscheinen Informationen zum Fehler.\nDu kannst diese an den Entwickler weiterleiten.',
'alert_successfullySavedSync' : 'Die Seite wird jetzt neu geladen. Danach wird versucht eine Verbindung zum Server herzustellen und die neusten Daten einzufügen!',
'label_errorOccuredYouMayClose' : 'Es traten Fehler auf. Du kannst das Fenster jetzt schließen.',
'label_backupList' : 'Backups',
'label_hereYouFindAllBackups' : 'Hier sind alle Backups aufgelistet',
'label_chooseBackupFromList' : 'Wähle ein Backup aus',
'label_show' : 'Anzeigen',
'label_createBackup' : 'Neues Backup erstellen',
'alert_backupCreated' : 'Backup wurde erstellt!',
'label_backupDate' : 'Backup vom',
'label_backup' : 'Backup',
'alert_reallyImport' : 'Wirklich importieren? Das überschreibt die aktuellen Daten und deaktiviert die Synchronisierung!',
'alert_HowToGetSync' : 'Falls du eine Synchronisierung eingerichtet hattest:\n\nUm die Synchronisierung wieder zu aktivieren und zu den neusten Daten zurückzukehren, kannst du die Synchronisierung über den Menüpunkt "Einstellungen" wieder aktivieren.\n\nDann kannst du über den Menüpunkt "Jetzt Synchronisieren..." die neusten Daten vom Server einspielen.',
'alert_backupLoaded' : 'Das Backup wurde eingespielt! Die automatische Synchronisierung mit dem Server ist jetzt deaktiviert.'
}
};
// ########################################## Beware of changing something after this line ################
const version = '3.0.7';
var api = typeof unsafeWindow != 'undefined' ? unsafeWindow.ScriptAPI : window.ScriptAPI;
api?api.register('DS Duke & Forum Assistant', 8.0, 'Samuel Essig', 'scripts@online.de'):api;
const ds_mitlieder_sortieren = test(function(){
document.getElementById('dsmitgliedersortierenaktiv').tagName;
},false) !== false;
var c_zindex = 20;
const url = document.location.href;
const world = url.split('.').shift().split('de').pop();
const lang = url.split('.')[0].split(/\/\/(\D+)\d+/)[1];
const say = text[lang]?text[lang]:{};
delete(text);
// GM functions:
if ((typeof GM_getValue == 'undefined') || (GM_getValue('a', 'b') == undefined)) {
var gm_value_prefix = 'ds_duke_and_forum_ass';
GM_addStyle = function(css) {
var style = document.createElement('style');
style.textContent = css;
document.getElementsByTagName('head')[0].appendChild(style);
}
GM_deleteValue = function(name) {
localStorage.removeItem(gm_value_prefix+name);
}
GM_getValue = function(name, defaultValue) {
var value = localStorage.getItem(gm_value_prefix+name);
if (!value)
return defaultValue;
var type = value[0];
value = value.substring(1);
switch (type) {
case 'b':
return value == 'true';
case 'n':
return Number(value);
default:
return value;
}
}
GM_listValues = function()
{
var keys = [];
for(var key in localStorage) {
if(key.substring(0,gm_value_prefix.length) == gm_value_prefix) {
keys.push(key.substring(gm_value_prefix.length));
}
}
return keys;
}
GM_log = function(message) {
console.log(message);
}
GM_registerMenuCommand = function(name, funk) {
//todo
}
GM_setValue = function(name, value) {
value = (typeof value)[0] + value;
localStorage.setItem(gm_value_prefix+name, value);
}
GM_xmlhttpRequest = function(options) {
if('string' == typeof options.onload) {
var callback = options.onload;
} else if('function' == typeof options.onload){
if(options.onload.name) {
var callback = options.onload.name;
} else {
var cb_name = 'callback_' + new Date().getTime();
if(!window[gm_value_prefix]) {
window[gm_value_prefix] = {};
}
window[gm_value_prefix][cb_name] = options.onload;
var callback = 'window.'+gm_value_prefix+'.'+cb_name;
}
} else {
throw('onload Option must be function name (string) or the function itself');
}
if(!options.url) {
throw('url Option must be set');
}
if('string' == typeof options.data) {
var parts = options.data.split('&');
var result = {};
for(var i = 0; i < parts.length; i++) {
var p = parts[i].split('=');
result[p[0]] = unescape(p[1]);
}
options.data = result;
}
if(options.method && 'GET' == options.method) {
if(options.url.indexOf('?') != -1) {
if(options.url.substring(-1) == '&' || options.url.substring(-1) == '?') {
options.url += 'callback='+callback+'&';
} else {
options.url += '&callback='+callback+'&';
}
} else {
options.url += '?callback='+callback+'&';
}
if(options.data) {
for(var key in options.data) {
options.url += '&'+escape(key)+'='+escape(options.data[key])+'&';
}
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = options.url;
document.body.appendChild(script);
if(options.onreadystatechange) {
options.onreadystatechange({
status:'102',
statusText:'Script element added to document.body',
readyState:2,
finalUrl:options.url
});
}
} else {
var rid = new Date().getTime();
var url = options.url;
if(url.indexOf('?') != -1) {
if(url.substring(-1) == '&' || url.substring(-1) == '?') {
url += 'post='+rid+'&';
} else {
url += '&post='+rid+'&';
}
} else {
url += '?post='+rid+'&';
}
var iframe_name = 'iframe_post_request_'+new Date().getTime();
var iframe = document.createElement('iframe');
iframe.setAttribute('name',iframe_name);
document.body.appendChild(iframe);
var form = document.createElement('form');
form.setAttribute('action',url);
form.setAttribute('method','post');
form.setAttribute('target',iframe_name);
form.setAttribute('enctype','application/x-www-form-urlencoded');
document.body.appendChild(form);
if(options.data) {
for(var key in options.data) {
var hidden = document.createElement('input');
hidden.setAttribute('type','hidden');
hidden.setAttribute('name',key);
hidden.setAttribute('value',options.data[key]);
form.appendChild(hidden);
}
}
var submit = document.createElement('input');
submit.setAttribute('type','submit');
submit.setAttribute('value','send');
form.appendChild(submit);
submit.click();
var cb_name1 = 'callback_' + new Date().getTime();
if(!window[gm_value_prefix]) {
window[gm_value_prefix] = {};
}
window[gm_value_prefix][cb_name1] = function(response) {
if(response.requestready) {
options.onload(response);
document.body.removeChild(form); // Debug
document.body.removeChild(iframe); // Debug
} else {
alert('GM_xmlhttpRequest: Unexpected Error in Synchronized Request');
}
};
var callback1 = 'window.'+gm_value_prefix+'.'+cb_name1;
var url = options.url;
if(url.indexOf('?') != -1) {
if(url.substring(-1) == '&' || url.substring(-1) == '?') {
url += 'get='+rid+'&callback='+callback1 +'&';
} else {
url += '&get='+rid+'&callback='+callback1 +'&';
}
} else {
url += '?get='+rid+'&callback='+callback1 +'&';
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
window.setTimeout(function() {
document.body.appendChild(script);
},200);
}
return options.url;
}
if(typeof(unsafeWindow)=='undefined') {
unsafeWindow=window;
}
}
function setValue(key,value) {
return GM_setValue(world+'_'+key,value);
};
function getValue(key,def) {
return GM_getValue(world+'_'+key,def);
};
function test(fct,elsewise) {
try {
fct();
} catch(error) {
return typeof(elsewise) == 'undefined' ? void(0) : elsewise ;
}
};
var dom = new html();
if(getValue('search_active') == undefined || getValue('reset') === true)
{
// First Start Fill Config
setValue('reset',false);
setValue('search_active',false);
setValue('colourThreads',2);
setValue('colourThreadsNames','');
setValue('replaceSmiliesOn',true);
setValue('maxFontSize',20);
setValue('maxImgSize','300x250');
setValue('memberlistSF',true);
setValue('synchronizingEnabled',false);
setValue('synchronizingLastRequest',0);
setValue('synchronizingCurrentVersion',0);
setValue('synchronizingUserId',0);
setValue('synchronizingGroupId',0);
setValue('synchronizingKey','');
setValue('synchronizingPassword','');
setValue('synchronizingURL','');
setValue('backupRegister','');
alert(say.alert_programmInited);
document.location.reload();
}
var replaceSmiliesOn = getValue('replaceSmiliesOn')?true:false;
var colourThreadsVar = parseInt(getValue('colourThreads')); // 0 = off, 1 = textbox, 2 = namebar
var colourThreadsNames = getValue('colourThreadsNames');
var maxFontSize = parseInt(getValue('maxFontSize')); // 0 > on
var maxImgSize = getValue('maxImgSize')?getValue('maxImgSize').split('x'):false; // false = off, split('x')[0,1]
var memberlistSF = getValue('memberlistSF')?true:false;
// Synchronizing Vars
var synchronizingEnabled = getValue('synchronizingEnabled',false)?true:false;
var synchronizingLastRequest = parseInt(getValue('synchronizingLastRequest',0)); // Timestamp (seconds)
var synchronizingCurrentVersion = getValue('synchronizingCurrentVersion',0); // Number
var synchronizingUserId = getValue('synchronizingUserId',0); // User id
var synchronizingGroupId = getValue('synchronizingGroupId',0); // Group id
var synchronizingKey = getValue('synchronizingKey',''); // Some kind of secret id, probably a hash
var synchronizingPassword = getValue('synchronizingPassword',''); // User password, probably a hash
var synchronizingURL = getValue('synchronizingURL',''); // URL to the server: http://192.168.178.42/DSDuke/sync.php
var backupRegister = getValue('backupRegister',''); // Comma-seperated list of timestamps. Backups are saved in following pattern: backup_{timestamp}
var srcs = {
"trash":"http://www.c1b1.de/smile/dsforum/trash.gif",
"edit":"http://www.c1b1.de/smile/dsforum/edit.gif",
"warning":"http://www.c1b1.de/smile/dsforum/warning.png",
"close":"http://www.c1b1.de/close.png",
"dialog_titlebar_bg":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAUCAMAAAB70KeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAPFBMVEXKto/JtY3Is4rGsYfEr4TDrYHCq3/Cq33AqnzCq37DrIDFr4PHsYfHsojHs4rItIzGs4zGsozGtI7KuJO4buSOAAAAJUlEQVR4XgXAhQ2AMAAAsM4V//9XgiBKsqJqumFatsPpcnu8vh8JzgC/JMysQAAAAABJRU5ErkJggg==",
//"dialog_main_bg":"graphic/background/main.jpg",
"dialog_main_bg":"graphic/background/bg-tile.jpg",
"chequer_plate":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAPCAYAAAAh6nXEAAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAM5JREFUCB0BwwA8/wEAAABM////AAAAAAAC////AAAAAAAAAAAAAgEBAQAAAAAAAAAAAAL///8AAAAAAAAAAAACAAAAAAEBAQAAAAAAAgAAAAD///8AAAAAAAIAAAAAAQEBAAAAAAACAAAAAP///wAAAAAAAgAAAAABAQEAAAAAAAIAAAAA////AAAAAAACAAAAAAEBAQAAAAAAAgAAAAD///8AAAAAAAIAAAAAAAAAAAEBAQACAAAAAAAAAAD///8AAgAAAAAAAAAAAQEBAI8aGGfA8Mz7AAAAAElFTkSuQmCC",
"push_thread":"http://www.c1b1.de/smile/dsforum/push_thread.png",
"loader":"http://www.c1b1.de/smile/dsforum/ajaxloader.gif",
"background_footer":"http://www.c1b1.de/smile/dsforum/background_footer.png"
};
var colours = new Array(
"#FFEFAE", "#FFD7AE", "#FECDD7", "#F9CDFE", "#E3CDFE", "#D3D7FE", "#D3ECFE", "#D3FEFA", "#CFFED0", "#ECFEAF",
"#FFE064", "#FFB66C", "#FD829A", "#F28EFD", "#C699FD", "#8B97FC", "#83C9FC", "#74FCEE", "#69FC6C", "#DEFD73",
"#F4C400", "#F47A00", "#E311FB", "#00ced1", "#1D33FA", "#0581DC", "#04C6B3", "#03A707", "#9CC903",
"#AD966B", "#9E7A8B", "#AE6AA9", "#6B6398", "#6F8BAA", "#6DABAB", "#6BAD71",
"#B79300", "#4F03AB", "#020F7D", "#034A7E", "#026258", "#014503", "#DFD9CE",
"#660000", "#701a1a", "#7a3333", "#854d4d", "#8f6666", "#998080", "#a39999", "#adb3b3", "#b8cccc", "#c2e6e6",
"#ccffff", "#ff0000", "#e60f00", "#cc1f00", "#b32e00", "#993d00", "#804d00", "#665c00", "#4d6b00", "#337a00",
"#1a8a00", "#009900", "#ffcc00", "#e6c71a", "#ccc233", "#b3bd4d", "#99b866", "#80b380", "#66ad99", "#4da8b3",
"#33a3cc", "#1a9ee6", "#0099ff", "#006600", "#007500", "#008500", "#009400", "#00a300", "#00b300", "#00c200",
"#00d100", "#00e000", "#00f000", "#00ff00", "#99ff66", "#a3f075", "#ade085", "#b8d194", "#c2c2a3", "#ccb3b3",
"#d6a3c2", "#e094d1", "#eb85e0", "#f575f0", "#ff66ff");
if(url.indexOf('forum.php') != -1 || url.indexOf('screen=forum') != -1) // If we are in a thread
{
var smilies = {
'^^':['img','http://www.c1b1.de/smile/dsforum/grin.gif'],
'xD':['img','http://www.c1b1.de/smile/dsforum/biggrin.gif'],
':-D':['img','http://www.c1b1.de/smile/dsforum/biggrin.gif'],
':D':['img','http://www.c1b1.de/smile/dsforum/biggrin.gif'],
'=D ':['img','http://www.c1b1.de/smile/dsforum/biggrin.gif'],
'lol':['img','http://www.c1b1.de/smile/dsforum/lword.gif'],
':P':['img','http://www.c1b1.de/smile/dsforum/tongue.gif'],
':-P':['img','http://www.c1b1.de/smile/dsforum/tongue.gif'],
'=P ':['img','http://www.c1b1.de/smile/dsforum/tongue.gif'],
'xP':['img','http://www.c1b1.de/smile/dsforum/tongue.gif'],
';p':['img','http://www.c1b1.de/smile/dsforum/tongue.gif'],
' 8)':['img','http://www.c1b1.de/smile/dsforum/cool.gif'],
'*cool*':['img','http://www.c1b1.de/smile/dsforum/cool.gif'],
'???':['img','http://www.c1b1.de/smile/dsforum/questionMark.png'],
';)':['img','http://www.c1b1.de/smile/dsforum/wink.gif'],
';-)':['img','http://www.c1b1.de/smile/dsforum/wink.gif'],
';(':['img','http://www.c1b1.de/smile/dsforum/cry.gif'],
':S':['img','http://www.c1b1.de/smile/dsforum/undecided.gif'],
':|':['img','http://www.c1b1.de/smile/dsforum/worried.gif'],
':(':['img','http://www.c1b1.de/smile/dsforum/sad.gif'],
':-(':['img','http://www.c1b1.de/smile/dsforum/sad.gif'],
':)':['img','http://www.c1b1.de/smile/dsforum/classic.gif'],
':-)':['img','http://www.c1b1.de/smile/dsforum/classic.gif'],
'=)':['img','http://www.c1b1.de/smile/dsforum/normal.gif']
};
}
// Start it
load(document.location.href.split('#')[0]);
function load(url)
{
if(url.indexOf('game.php') != -1 && url.indexOf('screen=ally') != -1 && url.indexOf('mode=members') != -1) // If we are on member page (of own tribe)
{
if(memberlistSF)
{
renderAllyMemberPage();
}
addPlayerLinksEvents();
bar();
}
else if(url.indexOf('game.php') != -1 && url.indexOf('screen=ally') != -1 && ( url.indexOf('mode=overview') != -1 || url.indexOf('mode=profile') != -1 || url.indexOf('mode=contracts') != -1) ) // If we are on tribe profile or tribe overview or tribe contracts (of own tribe)
{
addPlayerLinksEvents();
bar();
}
else if(url.indexOf('game.php') != -1 && url.indexOf('screen=ally') != -1 && url.indexOf('mode=invite') != -1) // If we are on tribe invitings (of own tribe)
{
// Order!
bar();
addInviteLinks();
addPlayerLinksEvents();
}
else if(url.substr(-10) == 'forum.php?' || url.substr(-10) == 'forum.php#' || url.substr(-9) == 'forum.php' || url.substr(-12) == 'screen=forum') // If we are on the start page (of the forum)
{
addAnswerEvents();
addPlayerLinksEvents();
bar();
}
else if((url.indexOf('forum.php') != -1 || url.indexOf('screen=forum') != -1) && (url.indexOf('screen=view_forum') != -1 || url.indexOf('screenmode=view_forum') != -1) && url.indexOf('forum_id') != -1) // If we are in a forum
{
addAnswerEvents();
addPlayerLinksEvents();
bar();
}
else if((url.indexOf('forum.php') != -1 || url.indexOf('screen=forum') != -1) && (url.indexOf('screen=view_thread') != -1 || url.indexOf('screenmode=view_thread') != -1) && url.indexOf('action=new_post') != -1 && url.indexOf('duke=push') != -1 ) // If replying is in progress and pushing thread was set and form submitted
{
rememberPushedPost();
}
else if((url.indexOf('forum.php') != -1 || url.indexOf('screen=forum') != -1) != -1 && (url.indexOf('screen=view_thread') != -1 || url.indexOf('screenmode=view_thread') != -1) && url.indexOf('thread_id') != -1 && url.indexOf('answer=true') != -1 && url.indexOf('duke=push') != -1 ) // If we are to reply a thread and pushing thread was set
{
pushThread();
}
else if((url.indexOf('forum.php') != -1 || url.indexOf('screen=forum') != -1) != -1 && (url.indexOf('screen=view_thread') != -1 || url.indexOf('screenmode=view_thread') != -1) && url.indexOf('thread_id') != -1 && url.indexOf('page=last') != -1 && document.location.hash.indexOf('duke=push') != -1 ) // If replying is finished and pushing thread was set
{
removePushPost();
}
else if((url.indexOf('forum.php') != -1 || url.indexOf('screen=forum') != -1) != -1 && (url.indexOf('screen=view_thread') != -1 || url.indexOf('screenmode=view_thread') != -1) && url.indexOf('thread_id') != -1 ) // If we are in a thread
{
// Order!
colourThreads();
scaleFontSize();
scaleImgSize();
replaceSmilies();
addPlayerLinksEvents();
addPushButton();
bar();
}
// Synchronize with Server (Future Versions)
synchronize();
// Adware
zIndexAdware();
/*
// Execute functions
if(url.indexOf('function=') != -1)
{
var fkt = url.split('=').pop();
// eval() won't work with setValue/getValue
// may work with eval(expr,window);
switch(fkt)
{
case 'showStartScreen':
showStartScreen();
break;
}
}
*/
}
function synchronize(force)
{
// Check whether synchronizing is enabled
if(!synchronizingEnabled)
return;
if(!force) {
var now = parseInt(new Date().getTime()/1000);
// Check for last request
if(synchronizingLastRequest+(60*60*3) > now) { // Every 3 hour
return false;
}
}
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
var es = new Array();
for(var p in names)
{
var str = '"'+p+'" : [\n';
str += ' "'+names[p][0]+'" , \n';
str += ' '+names[p][1]+' , \n';
str += ' "'+names[p][2]+'" , \n';
str += ' "'+names[p][3]+'" \n';
str += ' ]'
es.push(str);
}
var str = '{\n';
str += es.join(',\n');
str += '\n}';
var output_el = dialog_syncProgress();
do_sync(str,output_el,'dialog_syncProgress');
}
function do_sync(json_data,output_el,frameid) {
// Check whether synchronizing is enabled
if(!synchronizingEnabled) {
alert('Synchronizing not available');
return;
}
output_el.innerHTML = '';
var close = function() {
if(frameid) {
dom.id('dialog_syncProgress').parentNode.removeChild(dom.id('dialog_syncProgress'));
}
};
var closeOnError = function() {
dom.id('dialog_syncProgress_instructions').innerHTML = say.label_errorOccuredYouMayClose;
dom.id('loader_sync_log').parentNode.removeChild(dom.id('loader_sync_log'));
dom.id('textarea_sync_log').setAttribute('rows','25');
};
var log = function(str) {
output_el.innerHTML += str + '\n';
output_el.scrollTop = output_el.scrollHeight;
};
log('Synchronizing is started.');
var states = [
'UNINITIALIZED: open() has not been called yet.',
'LOADING: send() has not been called yet.',
'LOADED: send() has been called, and headers and status are available.',
'INTERACTIVE: Downloading; responseText holds partial data.',
'COMPLETED: The operation is complete.'];
// Synchronizing Vars
synchronizingCurrentVersion = getValue('synchronizingCurrentVersion',0); // Number
synchronizingUserId = getValue('synchronizingUserId',0); // User id
synchronizingGroupId = getValue('synchronizingGroupId',0); // Group id
synchronizingKey = getValue('synchronizingKey',''); // Some kind of secret id, probably a hash
synchronizingPassword = getValue('synchronizingPassword','');
synchronizingURL = getValue('synchronizingURL',''); // URL to the server: http://192.168.178.42/DSDuke/sync.php
log('Found URL: '+synchronizingURL);
var data = 'groupid='+synchronizingGroupId+'&userid='+synchronizingUserId+'&key='+escape(synchronizingKey)+'&password='+escape(synchronizingPassword)+'&dataversion='+synchronizingCurrentVersion+'&datajson='+escape(json_data);
setValue('synchronizingLastRequest',parseInt(new Date().getTime()/1000))
log('xmlhttpRequest . . . . ');
GM_xmlhttpRequest({
method: 'POST',
data: data,
url: synchronizingURL,
onreadystatechange: function(response) {
log('HTTP:'+response.status+' - '+response.statusText+' while '+states[response.readyState]+'('+response.readyState+') on: '+response.finalUrl);
},
onload: function(response) {
log('responseText:\n'+response.responseText);
try {
var str = dom.trim(response.responseText);
var result = JSON.parse(str);
log('\nSyncstatus='+result.syncstatus);
switch(result.syncstatus) {
case 'DataUpdated':
createBackup();
log('Backup stored.');
setValue('synchronizingCurrentVersion',parseInt(result.newversion));
var saveThing = new Array();
var names = result.data;
for(p in names) {
saveThing.push(escape(p) + '=' + names[p].join('='));
}
setValue('colourThreadsNames',saveThing.join(','));
// @todo changes speicher, auf mitgliederliste markieren und alte daten anzeigen?!
log('New Data stored.')
log('Finished.')
log('');
log(say.alert_successfullySaved);
document.location.reload();
break;
case 'ServerUpdated':
setValue('synchronizingCurrentVersion',parseInt(result.newversion));
log('Set synchronizingCurrentVersion='+parseInt(result.newversion))
log('Finished.');
close();
break;
case 'NothingToDo':
setValue('synchronizingCurrentVersion',parseInt(result.newversion));
log('Set synchronizingCurrentVersion='+parseInt(result.newversion))
log('Finished.');
close();
break;
case 'ServerError':
alert(say.alert_errorsInNextWindow);
alert(dom.dumpObj(result.errors,false));
closeOnError();
break;
case 'Unauthorized':
setValue('synchronizingEnabled',false)
alert(say.alert_outdatedSyncCode);
alert(dom.dumpObj(result.errors,false));
closeOnError();
break;
}
}
catch(error) {
var text = dom.dumpObj(error,false);
alert(say.alert_errorsInNextWindow);
text = say.label_wrongInputCode + '\n\n\nError description: \n\n' + text;
alert(text);
closeOnError();
}
}
});
}
function createBackup() {
var timestamp = new Date().getTime();
var data = getValue('colourThreadsNames');
setValue('backupRegister',getValue('backupRegister','')+','+timestamp);
setValue('backup_'+timestamp,data);
}
function getBackupList() {
var backupRegister = getValue('backupRegister','');
if(backupRegister.indexOf(',') == -1) {
backupRegister = [];
}
else {
backupRegister = backupRegister.split(',');
}
var backups = [];
for(var i = 0,len = backupRegister.length; i < len; i++) {
if(backupRegister[i] && parseInt(backupRegister[i])) {
backups.push( parseInt(backupRegister[i]) );
}
}
return backups;
}
function dialog_backups() {
var backups = getBackupList();
backups.reverse();
var select = dom.n('select');
select.setAttribute('id','backups_select');
for(var i = 0,len = backups.length; i < len; i++) {
var option = dom.n('option');
option.setAttribute('value',backups[i]);
var date = new Date();
date.setTime(backups[i]);
var str = ''+date.getDate() +'.'+(date.getMonth()+1)+'.'+date.getFullYear()+' - '+date.getHours()+':'+date.getMinutes();
option.innerHTML = str;
select.appendChild(option);
}
var input0 = dom.n('input');
input0.setAttribute('type','button');
input0.setAttribute('value',say.label_show);
input0.addEventListener('click',function() {
dialog_show_backup(parseInt(dom.id('backups_select').options[dom.id('backups_select').selectedIndex].value));
},false);
var input1 = dom.n('input');
input1.setAttribute('type','button');
input1.setAttribute('id','show_backup_button_create');
input1.setAttribute('value',say.label_createBackup );
input1.addEventListener('click',function() {
createBackup();
alert(say.alert_backupCreated);
document.location.reload();
},false);
var frame = new chuanghu('dialog_backups');
frame.setTitle( say.label_backupList );
frame.setButton('close',say.label_close);
frame.addContent('table',
{
0:[
[
input1,
'colspan=3'
]
],
1:[
[
dom.text(say.label_hereYouFindAllBackups),
'colspan=3'
]
],
2:[
dom.text(say.label_chooseBackupFromList),
select,
input0
]
},'border=0,');
frame.setPosition(150,60);
frame.render(document.getElementsByTagName('body')[0]);
}
function dialog_show_backup(timestamp) {
var backup = getValue('backup_'+timestamp,'No data?!');
var date = new Date();
date.setTime(timestamp);
var str = ''+date.getDate() +'.'+(date.getMonth()+1)+'.'+date.getFullYear()+' - '+date.getHours()+':'+date.getMinutes();
// Show a specific backup
var textarea = dom.n('textarea');
textarea.setAttribute('style','float:left; white-space:pre-wrap; font-size:xx-small; -moz-border-radius:5px; ');
textarea.setAttribute('cols','70');
textarea.setAttribute('rows','15');
textarea.setAttribute('id','show_backup_json_'+timestamp);
textarea.innerHTML = backup;
var input0 = dom.n('input');
input0.setAttribute('type','button');
input0.setAttribute('id','show_backup_button_'+timestamp);
input0.setAttribute('value',say.label_doImport);
input0.addEventListener('click',function() {
var timestamp = this.id.match(/(\d+)/)[1];
var data = dom.id('show_backup_json_'+timestamp).value;
var really = confirm(say.alert_reallyImport);
if(really) {
setValue('synchronizingEnabled',false);
setValue('colourThreadsNames',data);
alert(say.alert_backupLoaded);
alert(say.alert_HowToGetSync);
document.location.reload();
}
},false);
var frame = new chuanghu('dialog_show_backup_'+timestamp);
frame.setTitle( say.label_backup );
frame.setButton('close',say.label_close);
frame.addContent('table',
{
0:[
dom.text(say.label_backupDate+' '+str),
],
1:[
textarea
],
2:[
input0
]
},'border=0,');
frame.setPosition(150,60);
frame.render(document.getElementsByTagName('body')[0]);
}
function dialog_syncProgress()
{
// Log Textarea
var textarea_sync_log = dom.n('textarea');
textarea_sync_log.setAttribute('style','float:left; white-space:pre-wrap; font-size:xx-small; -moz-border-radius:5px; ');
textarea_sync_log.setAttribute('cols','70');
textarea_sync_log.setAttribute('rows','3');
textarea_sync_log.setAttribute('id','textarea_sync_log');
var loader = new Image();
loader.id = 'loader_sync_log';
loader.src = srcs.loader;
var frame = new chuanghu('dialog_syncProgress');
frame.setTitle( say.label_syncProgress );
frame.setInstructions( say.label_syncInProgressDoNotQuit );
frame.setButton('close',say.label_close);
frame.addContent('table',
{
0: [
loader
],
1:[
dom.text(say.label_syncLog)
],
2:[
textarea_sync_log
]
},'border=0,');
frame.setPosition(150,60);
frame.render(document.getElementsByTagName('body')[0]);
return textarea_sync_log;
}
function dialog_setupSync()
{
// <-SyncString
var input1 = dom.n('textarea');
input1.setAttribute('name','i_SyncString');
input1.setAttribute('cols',40);
input1.setAttribute('rows',3);
// SyncString->
var illustration = dom.n('p');
illustration.setAttribute('style','max-width:400px; font-style:italic; ');
illustration.appendChild(dom.text(say.label_yourCodeIllustration));
var frame = new chuanghu('dialog_syncSettings');
frame.setTitle(say.label_setupSync);
frame.setInstructions(say.label_syncSettings);
frame.setButton('cancel',say.label_cancel);
frame.setButton('button',say.label_save,save_dialog_syncSettings);
frame.addContent('table',
{
0:[
[
dom.text(say.label_currentSyncServerURL+' "'+synchronizingURL+'"'),
'colspan=3'
]
],
1:[
dom.text(say.label_yourCode),
input1
],
2:[
[
illustration,
'colspan=3'
]
]
},'border=0,');
frame.render(document.getElementsByTagName('body')[0]);
frame.setPosition(10,60);
}
function save_dialog_syncSettings()
{
// <-SyncString
var SyncString = dom.name('i_SyncString')[0].value;
// SyncString->
var parts = SyncString.split(';');
// synchronizingKey;synchronizingURL;synchronizingUserId;synchronizingGroupId;synchronizingPassword
setValue('synchronizingKey',parts[0]);
setValue('synchronizingURL',parts[1]);
setValue('synchronizingUserId',parseInt(parts[2]));
setValue('synchronizingGroupId',parseInt(parts[3]));
setValue('synchronizingPassword',parts[4]);
setValue('synchronizingEnabled',true);
setValue('synchronizingLastRequest',0);
setValue('synchronizingCurrentVersion',0);
alert(say.alert_successfullySavedSync);
dom.id('dialog_syncSettings').parentNode.removeChild(dom.id('dialog_syncSettings'));
document.location.reload();
}
function importJSONData(str)
{
try
{
var str = dom.trim(str);
var names = JSON.parse(str);
alert(dom.dumpObj(names,false));
var saveThing = new Array();
for(p in names)
{
void saveThing.push(escape(p) + '=' + names[p].join('='));
}
setValue('colourThreadsNames',saveThing.join(','));
alert(say.alert_successfullySaved);
document.location.reload();
}
catch(error)
{
var text = dom.dumpObj(error,false);
text = say.label_wrongInputCode + '\n\n\nError description: \n\n' + text;
alert(text);
}
}
function addPushButton()
{
// if Antworten vorhanden
if(!dom.class('thread_answer_open')[0])
return;
var original = dom.class('thread_answer_open')[0];
var a = original.parentNode.cloneNode(true);
a.setAttribute('href',a.href+'&duke=push');
var thread_answer = a.getElementsByClassName('thread_answer')[0];
thread_answer.innerHTML = say.label_pushThread;
thread_answer.title = say.label_pushThread;
original.parentNode.parentNode.appendChild(a);
}
function pushThread()
{
var textarea = document.getElementById('message');
if(textarea)
{
textarea.value = 'Push';
var form = textarea.parentNode.parentNode.parentNode.parentNode.parentNode;
form.setAttribute('action',form.action+'duke=push');
document.getElementsByName('send')[0].click();
}
}
function rememberPushedPost()
{
document.location.href = document.location.href.replace('action=new_post&','')+'&page=last ';
}
function removePushPost()
{
document.location.href = dom.name('last')[0].parentNode.getElementsByClassName('postheader_right')[0].getElementsByTagName('a')[2].href;
}
function zIndexAdware()
{
var td = document.getElementById('ad_leaderboard');
test(function(){
if(td)
{
td.style.zIndex = 0;
}
});
}
function renderAllyMemberPage()
{
var table = dom.id('ally_content').getElementsByClassName('vis')[0];
var elist = table.getElementsByTagName('tr');
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('=');
if(sub[0] && sub[1])
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?sub[3]:'',sub[4]!=undefined?sub[4]:'');
}
// Table Heading
if(ds_mitlieder_sortieren)
{
var td = dom.n('td'); // Empty
td.setAttribute('style','width:10px; background:rgb(247, 238, 211) url(graphic/background/content.jpg) 0px -28px; cursor: default;');
elist[0].appendChild(td);
var th = dom.n('th');
th.setAttribute('title','Duke Info by c1b1.de');
th.setAttribute('colspan','4');
th.style.MozBorderRadiusTopleft = '10px';
th.style.MozBorderRadiusTopright = '10px';
th.style.textAlign = 'center';
th.appendChild(dom.text('Duke Info'));
elist[0].appendChild(th);
var start_i = 1;
}
else
{
var start_i = 0;
}
// Table Head
if(ds_mitlieder_sortieren) {
var td = dom.n('td'); // Empty
td.setAttribute('style','width:10px; background:rgb(247, 238, 211) url(graphic/background/content.jpg) 0px -28px; cursor: default;');
elist[start_i].appendChild(td);
}
var th = dom.n('th');
th.setAttribute('title',say.label_colour);
th.appendChild(dom.text(' '));
elist[start_i].appendChild(th);
var th = dom.n('th');
th.setAttribute('title',say.label_warnings);
var img = new Image();
img.alt = say.label_warnings;
img.src = srcs['warning'];
th.appendChild(img);
elist[start_i].appendChild(th);
var th = dom.n('th');
th.setAttribute('title',say.label_notes);
th.appendChild(dom.text(say.label_notes));
elist[start_i].appendChild(th);
var th = dom.n('th');
th.appendChild(dom.text(say.label_action));
elist[start_i].appendChild(th);
var adjusted_arr = new Array();
var start_i = ds_mitlieder_sortieren?2:1;
var len = ds_mitlieder_sortieren?elist.length-5:elist.length ;
var warnings = 0;
var player_n = 0;
for(var i = start_i; len > i; i++)
{
++player_n;
// newline bug
var td_i = ds_mitlieder_sortieren?1:0;
elist[i].getElementsByTagName('td')[td_i].style.whiteSpace = 'nowrap';
var player = elist[i].getElementsByTagName('td')[td_i].getElementsByTagName('a')[0].firstChild.data;
if(names[player])
{
if(ds_mitlieder_sortieren) {
var td = dom.n('td'); // Empty
td.setAttribute('style','width:10px; background:rgb(247, 238, 211) url(graphic/background/content.jpg) 0px -28px; cursor: default;');
elist[i].appendChild(td);
}
var td = dom.n('td'); // Colour
td.setAttribute('title',names[player][0])
td.setAttribute('class','ds_duke_and_forum_assistant_member_page_colour_td')
td.setAttribute('style','width:10px; border:'+invColour(names[player][0])+' 1px solid; background:'+names[player][0]+';');
elist[i].appendChild(td);
var td = dom.n('td'); // Warnings
td.appendChild(dom.text(names[player][1]));
warnings += parseInt(names[player][1]);
elist[i].appendChild(td);
var td = dom.n('td'); // Notes
var tmp = unescape(names[player][2]);
tmp = tmp.length>30?tmp.substr(0,27)+'...':tmp;
td.appendChild(dom.text(tmp));
elist[i].appendChild(td);
var td = dom.n('td');
var a = dom.n('a');
a.setAttribute('href','#');
a.appendChild(dom.text(say.label_details));
dom.addEvent(a,'click',function() {
var td_i = ds_mitlieder_sortieren?1:0;
if(this.parentNode.parentNode.getElementsByTagName('td')[td_i].getElementsByTagName('a')[0])
var id = this.parentNode.parentNode.getElementsByTagName('td')[td_i].getElementsByTagName('a')[0].firstChild.data;
else
var id = this.parentNode.parentNode.getElementsByTagName('td')[td_i].getElementsByTagName('span')[0].firstChild.data;
dialog_playerMenu(id);
return void(0);
});
td.appendChild(a);
elist[i].appendChild(td);
// Save to new array
adjusted_arr[player] = names[player];
}
else
{
// Search next colour
var n = 0;
var c = true;
while(c)
{
if(n > colours.length)
break;
var free = true;
for(var p in names)
{
if(names[p][0] == colours[n])
{
free = false;
break;
}
}
if(free)
break;
else
n++
}
// Save new player to new array
names[player] = new Array(colours[n],0,'','');
adjusted_arr[player] = new Array(colours[n],0,'','');
}
}
// Update
if(names != adjusted_arr)
{
var saveThing = new Array();
for(p in adjusted_arr)
{
void saveThing.push(escape(p) + '=' + adjusted_arr[p].join('='));
}
setValue('colourThreadsNames',saveThing.join(','));
}
// Update Colours every x seconds:
if(ds_mitlieder_sortieren)
{
window.setInterval(updateAllyMemberPageColours,Math.round(updateAllyMemberPageColours_interval*1000));
}
// Footer
if(ds_mitlieder_sortieren)
{
// Total:
++i;
var td = dom.n('td'); // Empty
td.setAttribute('style','width:10px; background:rgb(247, 238, 211) url(graphic/background/content.jpg) 0px -28px; cursor: default;');
elist[i].appendChild(td);
var td = dom.n('td');
td.appendChild(dom.text(say.label_totalWarnings));
td.setAttribute('colspan',3);
td.style.color = 'Gray';
elist[i].appendChild(td);
var td = dom.n('td');
td.appendChild(dom.text(warnings));
elist[i].appendChild(td);
// Average:
++i;
var td = dom.n('td'); // Empty
td.setAttribute('style','width:10px; background:rgb(247, 238, 211) url(graphic/background/content.jpg) 0px -28px; cursor: default;');
elist[i].appendChild(td);
var td = dom.n('td');
td.appendChild(dom.text( say.label_average ));
td.setAttribute('colspan',3);
td.style.color = 'Gray';
elist[i].appendChild(td);
var td = dom.n('td');
var av = Math.round( (warnings / player_n) * 10 ) / 10;
av = av + '';
av = av.replace('.',',');
td.appendChild(dom.text( av ));
elist[i].appendChild(td);
// Heading again:
++i;
var td = dom.n('td'); // Empty
td.setAttribute('style','width:10px; background:rgb(247, 238, 211) url(graphic/background/content.jpg) 0px -28px; cursor: default;');
elist[i].appendChild(td);
var th = dom.n('th');
th.setAttribute('title','Duke Info by c1b1.de');
th.setAttribute('colspan','4');
th.style.MozBorderRadiusBottomleft = '10px';
th.style.MozBorderRadiusBottomright = '10px';
th.style.textAlign = 'center';
th.appendChild(dom.text( say.label_DukeInfo ));
elist[i].appendChild(th);
}
}
function updateAllyMemberPageColours()
{
// Only used if ds_mitlieder_sortieren is active, cause its hover effect kills the colour
if(!ds_mitlieder_sortieren)
return false;
var table = document.getElementsByClassName('vis')[1];
var elist = table.getElementsByTagName('tr');
var start_i = ds_mitlieder_sortieren?2:1;
var len = ds_mitlieder_sortieren?elist.length-5:elist.length ;
for(var i = start_i; len > i; i++)
{
test( function() {
var td = elist[i].getElementsByClassName('ds_duke_and_forum_assistant_member_page_colour_td')[0];
if(td.style.backgroundColor != td.title)
td.style.backgroundColor = td.title;
});
}
}
function dialog_playerMenu(name)
{
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
var data = names[name];
var reasons_text = dom.text('Gründe:');
if(data[1] > 0)
{
var reasons = data[3].split(';');
var reasons_select = dom.n('select');
for(var i = 0; i < data[1]; i++)
{
var option = dom.n('option');
option.appendChild(dom.text(unescape(reasons[i]?reasons[i]:say.label_noReasonAvailable)));
reasons_select.appendChild(option);
}
}
else
{
var reasons_select = dom.text('-');
}
var a_editNotes = dom.n('a');
a_editNotes.setAttribute('href','#');
a_editNotes.appendChild(dom.text( say.label_editNotes ));
dom.addEvent(a_editNotes,'click',function()
{
dialog_playerMenu_editNotes(name);
return false;
});
var a_editColour = dom.n('a');
a_editColour.setAttribute('href','#');
a_editColour.appendChild(dom.text( say.label_editColour ));
dom.addEvent(a_editColour,'click',function()
{
dialog_playerMenu_editColour(name);
return false;
});
var a_addWarning = dom.n('a');
a_addWarning.setAttribute('href','#');
a_addWarning.appendChild(dom.text( say.label_reprimand ));
dom.addEvent(a_addWarning,'click',function()
{
dialog_playerMenu_addWarning(name);
return false;
});
if(data[1] != 0)
{
var a_removeWarning = dom.n('a');
a_removeWarning.setAttribute('href','#');
a_removeWarning.appendChild(dom.text( say.label_repealWarning ));
dom.addEvent(a_removeWarning,'click',function()
{
dialog_playerMenu_removeWarning(name);
return false;
});
}
else
var a_removeWarning = false;
var frame = new chuanghu('dialog_playerMenu');
frame.setTitle( say.label_playerMenu +' - '+unescape(escape(name)));
frame.setInstructions( say.label_infoAboutPlayer +' '+unescape(escape(name)));
frame.setButton('close',say.label_close);
frame.addContent('table',
{
0:[
dom.text(say.label_name+':'),
dom.text(unescape(escape(name)))
],
1:[
dom.text(say.label_warnings+':'),
dom.text(data[1])
],
2:[
reasons_text,
reasons_select
],
3:[
dom.text(say.label_colourInForum+':'),
[
dom.text(data[0]),
'id=dialog_playerMenu_forum_color_td',
'style=color:transparent; background:'+data[0]+';',
'title='+data[0]
]
],
4:[
[
dom.text(say.label_notes+':'),
'colspan=2'
]
],
5:[
[
dom.text(data[2]),
'colspan=2',
'style=border:1px solid #0082BE; white-space: pre-wrap; '
]
],
6:[
[
a_editNotes,
'colspan=2'
]
],
7:[
[
a_editColour,
'colspan=2'
]
],
8:[
[
a_addWarning,
'colspan=2'
]
],
9:[
[
a_removeWarning,
'colspan=2'
]
]
},'border=0,');
dialog_playerMenu_id = frame.render(document.getElementsByTagName('body')[0]);
}
function dialog_playerMenu_editNotes(name)
{
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
var data = names[name];
var textarea = dom.n('textarea');
textarea.setAttribute('title',name);
textarea.setAttribute('cols','60');
textarea.setAttribute('rows','5');
textarea.setAttribute('id','dialog_playerMenu_editNotes_textarea');
textarea.setAttribute('style','background:white url(http://c1b1.de/images/gm_logo.png) bottom right no-repeat; ');
textarea.appendChild(dom.text(data[2]));
var frame = new chuanghu('dialog_playerMenu_editNotes');
frame.setTitle(say.label_editNotes_nosymbol +' - '+unescape(escape(name)));
frame.setInstructions(say.label_editYourNotes);
frame.setButton('cancel',say.label_cancel);
frame.setButton('button',say.label_save,dialog_playerMenu_editNotes_save);
frame.addContent('table',
{
0:[
dom.text('Notizen:')
],
1:[
[
dom.text(data[2]),
'style= border:2px solid #0082BE; white-space:pre-wrap; '
]
],
2:[
textarea
]
},'border=0,');
frame.setPosition('id',dialog_playerMenu_id,15);
frame.render(document.getElementsByTagName('body')[0]);
}
function dialog_playerMenu_editNotes_save()
{
var text = escape(dom.id('dialog_playerMenu_editNotes_textarea').value);
var name = dom.id('dialog_playerMenu_editNotes_textarea').title;
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
names[name][2] = text;
var saveThing = new Array();
for(p in names)
{
void saveThing.push(escape(p) + '=' + names[p].join('='));
}
setValue('colourThreadsNames',saveThing.join(','));
alert(say.alert_successfullySaved);
document.location.reload();
}
function dialog_playerMenu_editColour(name)
{
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
var data = names[name];
var input = dom.n('input');
input.setAttribute('title',name);
input.setAttribute('type','text');
input.setAttribute('value',data[0]);
input.setAttribute('id','dialog_playerMenu_editColour_input');
input.appendChild(dom.text(data[2]));
dom.addEvent(input,'change',function(){
dom.id('dialog_playerMenu_editColour_color_td_updating').style.backgroundColor = this.value;
updatecColorDiv(this.value);
updateColorSliders();
});
var div = dom.n('div');
var start_distance = 100;
// Bar 1
var b1 = dom.n('div');
b1.setAttribute('style','height:10px; width:265px; background:silver; position:absolute; top:'+(start_distance+10)+'px; left:10px; ');
var s1 = dom.n('div');
s1.setAttribute('style','height:8px; width:10px; position:absolute; background:black; top:1px; left:0px; ');
s1.setAttribute('id','color_picker_s1');
b1.appendChild(s1);
var current_position1 = parseInt(s1.style.left);
var active1 = false;
var click_position1;
dom.addEvent(s1,'mousedown',function(e) {
current_position1 = parseInt(s1.style.left);
click_position1 = e.pageX - current_position1;
active1 = true;
});
dom.addEvent(document,'mouseup',function() {
active1 = false;
});
dom.addEvent(document,'mousemove',function(e) {
if(active1) {
var obj = s1;
var diff = (e.pageX - click_position1);
if(diff < 0)
diff = 0;
else if(diff > 255)
diff = 255;
obj.style.left = diff + 'px';
dom.id('color_picker_input1').value = diff;
updatecColorDiv();
}
});
div.appendChild(b1);
var input1 = dom.n('input');
input1.setAttribute('type','text');
input1.setAttribute('id','color_picker_input1');
input1.setAttribute('size','3');
input1.setAttribute('value','0');
input1.setAttribute('style','margin-top:'+(start_distance+50)+'px; ');
dom.addEvent(input1,'change',function() {
var n = parseInt(this.value);
if(typeof(n) != typeof(2))
n = 0;
else if(n < 0)
n = 0;
else if(n > 255)
n = 255;
s1.style.left = n + 'px';
this.value = n;
updatecColorDiv();
});
div.appendChild(input1);
// Bar 2
var b2 = dom.n('div');
b2.setAttribute('style','height:10px; width:265px; background:silver; position:absolute; top:'+(start_distance+25)+'px; left:10px; ');
var s2 = dom.n('div');
s2.setAttribute('style','height:8px; width:10px; position:absolute; background:black; top:1px; left:0px; ');
s2.setAttribute('id','color_picker_s2');
b2.appendChild(s2);
var current_position2 = parseInt(s2.style.left);
var active2 = false;
var click_position2;
dom.addEvent(s2,'mousedown',function(e) {
current_position2 = parseInt(s2.style.left);
click_position2 = e.pageX - current_position2;
active2 = true;
});
dom.addEvent(document,'mouseup',function() {
active2 = false;
});
dom.addEvent(document,'mousemove',function(e) {
if(active2) {
var obj = s2;
var diff = (e.pageX - click_position2);
if(diff < 0)
diff = 0;
else if(diff > 255)
diff = 255;
obj.style.left = diff + 'px';
dom.id('color_picker_input2').value = diff;
updatecColorDiv();
}
});
div.appendChild(b2);
var input2 = dom.n('input');
input2.setAttribute('type','text');
input2.setAttribute('id','color_picker_input2');
input2.setAttribute('size','3');
input2.setAttribute('value','0');
input2.setAttribute('style','margin-top:'+(start_distance+50)+'px; ');
dom.addEvent(input2,'change',function() {
var n = parseInt(this.value);
if(typeof(n) != typeof(2))
n = 0;
else if(n < 0)
n = 0;
else if(n > 255)
n = 255;
s2.style.left = n + 'px';
this.value = n;
updatecColorDiv();
});
div.appendChild(input2);
// Bar 3
var b3 = dom.n('div');
b3.setAttribute('style','height:10px; width:265px; background:silver; position:absolute; top:'+(start_distance+40)+'px; left:10px; ');
var s3 = dom.n('div');
s3.setAttribute('style','height:8px; width:10px; position:absolute; background:black; top:1px; left:0px; ');
s3.setAttribute('id','color_picker_s3');
b3.appendChild(s3);
var current_position3 = parseInt(s3.style.left);
var active3 = false;
var click_position3;
dom.addEvent(s3,'mousedown',function(e) {
current_position3 = parseInt(s3.style.left);
click_position3 = e.pageX - current_position3;
active3 = true;
});
dom.addEvent(document,'mouseup',function() {
active3 = false;
});
dom.addEvent(document,'mousemove',function(e) {
if(active3) {
var obj = s3;
var diff = (e.pageX - click_position3);
if(diff < 0)
diff = 0;
else if(diff > 255)
diff = 255;
obj.style.left = diff + 'px';
dom.id('color_picker_input3').value = diff;
updatecColorDiv();
}
});
div.appendChild(b3);
var input3 = dom.n('input');
input3.setAttribute('type','text');
input3.setAttribute('id','color_picker_input3');
input3.setAttribute('size','3');
input3.setAttribute('value','0');
input3.setAttribute('style','margin-top:'+(start_distance+50)+'px; ');
dom.addEvent(input3,'change',function() {
var n = parseInt(this.value);
if(typeof(n) != typeof(2))
n = 0;
else if(n < 0)
n = 0;
else if(n > 255)
n = 255;
s3.style.left = n + 'px';
this.value = n;
updatecColorDiv();
});
div.appendChild(input3);
// Bar 4
var b4 = dom.n('div');
b4.setAttribute('style','height:10px; width:265px; background:silver; position:absolute; top:'+(start_distance+60)+'px; left:10px; ');
var s4 = dom.n('div');
s4.setAttribute('style','height:8px; width:10px; position:absolute; background:black; top:1px; left:0px; ');
b4.appendChild(s4);
var current_position4 = parseInt(s4.style.left);
var active4 = false;
var click_position4;
var colour;
dom.addEvent(s4,'mousedown',function(e) {
current_position4 = parseInt(s4.style.left);
click_position4 = e.pageX - current_position4;
var r = parseInt(dom.id('color_picker_input1').value).toString(16);
var g = parseInt(dom.id('color_picker_input2').value).toString(16);
var b = parseInt(dom.id('color_picker_input3').value).toString(16);
colour = "0x"+r+g+b;
active4 = true;
});
dom.addEvent(document,'mouseup',function() {
colour = false;
active4 = false;
s4.style.left = '0px';
});
dom.addEvent(document,'mousemove',function(e) {
if(active4) {
var obj = s4;
var diff = (e.pageX - click_position4);
if(diff < 0)
diff = 0;
else if(diff > 255)
diff = 255;
obj.style.left = diff + 'px';
diff = (diff.toString(16).length==1)?('0'+diff.toString(16)):(diff.toString(16));
var re = lightenColor(colour,"0x"+diff+diff+diff);
dom.id('color_picker_input1').value = parseInt(re.substr(2,2),16);
dom.id('color_picker_input2').value = parseInt(re.substr(4,2),16);
dom.id('color_picker_input3').value = parseInt(re.substr(6,2),16);
updateColorSliders();
var hex_string = re.replace('0x','#');
dom.id('dialog_playerMenu_editColour_color_td_updating').style.backgroundColor = hex_string;
dom.id('dialog_playerMenu_editColour_color_td_updating').title = hex_string;
dom.id('dialog_playerMenu_editColour_input').value = hex_string;
}
});
div.appendChild(b4);
var distance_top = 80;
var distance_left = 180;
var max_top = 50;
var max_left = 50;
function getC(a,i)
{
var r = 0,g = 0,b = 0;
a = Math.round((255 / max_left) * a);
i = Math.round((255 / max_top) * i);
r = a;
g = 255-i;
b = i
return 'rgb('+r+','+g+','+b+')';
}
for(var i = 0; i < max_top; i++)
{
for(var a = 0; a < max_left; a++)
{
var c = dom.n('div');
c.setAttribute('style','height:1px; width:1px; position:absolute; top:'+(start_distance+i+distance_top)+'px; left:'+(a+distance_left)+'px; ');
c.style.backgroundColor = getC(a,i);
c.addEventListener('click',colorClicked,false);
div.appendChild(c);
}
}
var frame = new chuanghu('dialog_playerMenu_editColour');
frame.setTitle(say.label_editColour_nosymbol+' - '+unescape(escape(name)));
frame.setInstructions(say.label_editForumColourOfThePlayer);
frame.setButton('cancel',say.label_cancel);
frame.setButton('button',say.label_save,dialog_playerMenu_editColour_save);
frame.addContent('table',
{
0:[
dom.text(say.label_currentColour),
dom.text(''),
[
dom.text(data[0]),
'id=dialog_playerMenu_editColour_color_td',
'style=color:transparent; background:'+data[0]+'; ',
'title='+data[0]
]
],
1:[
dom.text(say.label_newColourValueInHEX),
input,
[
dom.text(''),
'id=dialog_playerMenu_editColour_color_td_updating',
'style=color:transparent; background:transparent; '
]
]
},'border=0,');
frame.addContent('node',div);
frame.setPosition('id',dialog_playerMenu_id,15);
frame.render(document.getElementsByTagName('body')[0]);
updatecColorDiv(data[0]);
updateColorSliders();
}
function dec2hex(n){
n = parseInt(n);
var c = 'ABCDEF';
var b = n / 16;
var r = n % 16;
b = b-(r/16);
b = ((b>=0) && (b<=9)) ? b : c.charAt(b-10);
return ((r>=0) && (r<=9)) ? b+''+r : b+''+c.charAt(r-10);
}
function colorClicked()
{
var c = dom.trim(dom.trim(this.style.backgroundColor).substr(4));
var c = c.substr(0,c.length-1).split(',');
var r = dom.trim(c[0]);
var g = dom.trim(c[1]);
var b = dom.trim(c[2]);
updatecColorDiv(r,g,b);
updateColorSliders()
}
function updatecColorDiv(r,g,b) {
if(!r && !g)
{
var r = parseInt(dom.id('color_picker_input1').value).toString(16);
var g = parseInt(dom.id('color_picker_input2').value).toString(16);
var b = parseInt(dom.id('color_picker_input3').value).toString(16);
}
else if(!g && r)
{
var tmp = dom.n('div');
tmp.setAttribute('style','color:'+r+'; ');
var c = dom.trim(tmp.style.color); // rgb(199, 153, 84)
c = c.split(',');
r = dom.trim(dom.trim(c[0]).substr(4));
g = dom.trim(c[1]);
b = dom.trim(c[2]).substr(0,dom.trim(c[2]).length-1);
delete(c);
dom.id('color_picker_input1').value = r;
dom.id('color_picker_input2').value = g;
dom.id('color_picker_input3').value = b;
r = dec2hex(parseInt(r));
g = dec2hex(parseInt(g));
b = dec2hex(parseInt(b));
}
else
{
dom.id('color_picker_input1').value = r;
dom.id('color_picker_input2').value = g;
dom.id('color_picker_input3').value = b;
r = dec2hex(r);
g = dec2hex(g);
b = dec2hex(b);
}
r = r.length==1?'0'+r:r;
g = g.length==1?'0'+g:g;
b = b.length==1?'0'+b:b;
var colour = '#'+r+g+b;
dom.id('dialog_playerMenu_editColour_color_td_updating').style.backgroundColor = colour;
dom.id('dialog_playerMenu_editColour_color_td_updating').title = colour;
dom.id('dialog_playerMenu_editColour_input').value = colour;
}
function updateColorSliders() {
var r = parseInt(dom.id('color_picker_input1').value);
var g = parseInt(dom.id('color_picker_input2').value);
var b = parseInt(dom.id('color_picker_input3').value);
dom.id('color_picker_s1').style.left = r + 'px';
dom.id('color_picker_s2').style.left = g + 'px';
dom.id('color_picker_s3').style.left = b + 'px';
}
function lightenColor(color,bn) {
if(bn == undefined)
bn = 0x888888;
ra = (color & 0xff0000) >> 16;
ga = (color & 0x00ff00) >> 8;
ba = color & 0x0000ff;
rb = (bn & 0xff0000) >> 16;
gb = (bn & 0x00ff00) >> 8;
bb = bn & 0x0000ff;
rc = ra+rb;
if(rc > 255)
rc = 255;
gc = ga+gb;
if(gc > 255)
gc = 255;
bc = ba+bb;
if(bc > 255)
bc = 255;
hex = "0x" + (rc << 16 | gc << 8 | bc).toString(16);
return hex;
}
function dialog_playerMenu_editColour_save()
{
var value = dom.id('dialog_playerMenu_editColour_input').value;
var name = dom.id('dialog_playerMenu_editColour_input').title;
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]);
}
names[name][0] = value;
var saveThing = new Array();
for(p in names)
{
void saveThing.push(escape(p) + '=' + names[p].join('='));
}
setValue('colourThreadsNames',saveThing.join(','));
alert(say.alert_successfullySaved);
document.location.reload();
}
function dialog_playerMenu_addWarning(name)
{
var affirmation = confirm('Soll '+unescape(escape(name))+' wirklich eine Verwarnung bekommen?');
if(affirmation)
{
var answer = prompt(say.alert_shouldHeBeReprimanded.replace(/%player%/g,unescape(escape(name))) ,'');
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]!=''?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
if(names[name][1] != 0)
{
names[name][3] = names[name][3].split(';');
var new_reasons = new Array();
for(var i = 0; i < parseInt(names[name][1]); i++)
{
if(names[name][3][i])
new_reasons.push(names[name][3][i]);
else
new_reasons.push('');
}
new_reasons.push(escape(answer));
names[name][3] = new_reasons.join(';');
}
else
{
names[name][3] = escape(answer);
}
names[name][1] = parseInt(names[name][1])+1;
var saveThing = new Array();
for(p in names)
{
void saveThing.push(escape(p) + '=' + names[p].join('='));
}
setValue('colourThreadsNames',saveThing.join(','));
alert(say.alert_successfullySaved);
document.location.reload();
}
}
function dialog_playerMenu_removeWarning(name)
{
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
var data = names[name];
var reasons = data[3].split(';');
var select = dom.n('select');
select.setAttribute('id','dialog_playerMenu_removeWarning_select');
select.setAttribute('title',name);
for(var i = 0; i < data[1]; i++)
{
var option = dom.n('option');
option.setAttribute('value',i);
option.appendChild(dom.text(unescape(reasons[i]?reasons[i]:say.label_noReasonAvailable)));
select.appendChild(option);
}
var frame = new chuanghu('dialog_playerMenu_removeWarning');
frame.setTitle(say.label_repealWarning_nosymbol+' - '+unescape(escape(name)));
frame.setInstructions(say.label_chooseTheWarningToRemove);
frame.setButton('cancel',say.label_cancel);
frame.setButton('button',say.label_delete,function() {
dialog_playerMenu_removeWarning_save(name);
});
frame.addContent('table',
{
0:[
dom.text(say.label_warnings+':'),
select
]
},'border=0,');
frame.setPosition('id',dialog_playerMenu_id,15);
frame.render(document.getElementsByTagName('body')[0]);
}
function dialog_playerMenu_removeWarning_save(name)
{
var value = parseInt(dom.id('dialog_playerMenu_removeWarning_select').options[dom.id('dialog_playerMenu_removeWarning_select').selectedIndex].value);
var affirmation = confirm(say.alert_reallyDeleteTheWarning);
if(affirmation)
{
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]!=''?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
if(names[name][1] != 0)
{
names[name][3] = names[name][3].split(';');
var new_reasons = new Array();
for(var i = 0; i < parseInt(names[name][1]); i++)
{
if(i != value)
{
if(names[name][3][i])
new_reasons.push(names[name][3][i]);
else
new_reasons.push('');
}
}
names[name][3] = new_reasons.join(';');
names[name][1] = parseInt(names[name][1])-1;
var saveThing = new Array();
for(p in names)
{
void saveThing.push(escape(p) + '=' + names[p].join('='));
}
setValue('colourThreadsNames',saveThing.join(','));
alert(say.alert_successfullySaved);
document.location.reload();
}
}
}
function dialog_settings()
{
var div = dom.n('div');
div.id = 'dialog_settings';
div.style.zIndex = 21;
div.style.position = 'absolute';
div.style.top = '100px';
div.style.left = '200px';
div.style.minHeight = '50px';
div.style.minWidth = '150px';
div.style.background = 'url(graphic/background/main.jpg) #F1EBDD';
div.style.border = '3px outset #804000';
div.style.borderTopColor = '#A0A0A0';
var content = dom.n('table');
var tr = dom.n('tr');
var th = dom.n('th');
th.setAttribute('colspan',2);
th.appendChild(dom.text(say.label_settings));
tr.appendChild(th);
content.appendChild(tr);
// <-Colour Threads
var tr = dom.n('tr');
var td = dom.n('td');
td.appendChild(dom.text( say.label_colourThreads ));
tr.appendChild(td);
var select = dom.n('select');
select.setAttribute('size','1');
select.setAttribute('name','i_colourThreads');
var option0 = dom.n('option');
option0.setAttribute('value','0');
option0.appendChild(dom.text( say.label_off ));
if(colourThreadsVar == 0)
option0.setAttribute('selected','selected');
var option1 = dom.n('option');
option1.setAttribute('value','1');
option1.appendChild(dom.text( say.label_textbox ));
if(colourThreadsVar == 1)
option1.setAttribute('selected','selected');
var option2 = dom.n('option');
option2.setAttribute('value','2');
option2.appendChild(dom.text(say.label_title));
if(colourThreadsVar == 2)
option2.setAttribute('selected','selected');
dom.appendChilds(select,option0,option1,option2);
var td = dom.n('td');
td.appendChild(select);
tr.appendChild(td);
content.appendChild(tr);
// Colour Threads->
// <-Replace Smilies
var tr = dom.n('tr');
var td = dom.n('td');
td.appendChild(dom.text( say.label_replaceSmilies ));
tr.appendChild(td);
var input = dom.n('input');
input.setAttribute('value','true');
input.setAttribute('type','checkbox');
input.setAttribute('name','i_replaceSmilies');
if(replaceSmiliesOn)
input.setAttribute('checked','checked');
var td = dom.n('td');
td.appendChild(input);
tr.appendChild(td);
content.appendChild(tr);
// Replace Smilies->
// <-Scale Fontsize
var tr = dom.n('tr');
var td = dom.n('td');
td.appendChild(dom.text( say.label_maxFontsize ));
tr.appendChild(td);
var input = dom.n('input');
input.setAttribute('value','true');
input.setAttribute('type','checkbox');
input.setAttribute('name','i_scaleFontsize');
if(maxFontSize > 0)
input.setAttribute('checked','checked');
dom.addEvent(input,'click',function()
{
if(this.checked)
dom.name('i_scaleFontsize_text')[0].removeAttribute('disabled',1);
else
dom.name('i_scaleFontsize_text')[0].setAttribute('disabled','disabled');
});
var input_text = dom.n('input');
input_text.setAttribute('type','text');
input_text.setAttribute('name','i_scaleFontsize_text');
if(maxFontSize > 0)
input_text.setAttribute('value',maxFontSize);
else
{
input_text.setAttribute('value','');
input_text.setAttribute('disabled','disabled');
}
var td = dom.n('td');
td.appendChild(input);
td.appendChild(dom.text(' '));
td.appendChild(input_text);
tr.appendChild(td);
content.appendChild(tr);
// Scale Fontsize->
// <-Scale Imgagesize
var tr = dom.n('tr');
var td = dom.n('td');
td.appendChild(dom.text( say.label_maxImageSize ));
tr.appendChild(td);
var input = dom.n('input');
input.setAttribute('value','true');
input.setAttribute('type','checkbox');
input.setAttribute('name','i_maxImgSize');
if(maxImgSize)
input.setAttribute('checked','checked');
dom.addEvent(input,'click',function()
{
if(this.checked)
{
dom.name('i_maxImgSize_width')[0].removeAttribute('disabled',1);
dom.name('i_maxImgSize_height')[0].removeAttribute('disabled',1);
}
else
{
dom.name('i_maxImgSize_width')[0].setAttribute('disabled','disabled');
dom.name('i_maxImgSize_height')[0].setAttribute('disabled','disabled');
}
});
var input_width = dom.n('input');
input_width.setAttribute('type','text');
input_width.setAttribute('name','i_maxImgSize_width');
if(maxImgSize)
input_width.setAttribute('value',maxImgSize[0]);
else
{
input_width.setAttribute('value','');
input_width.setAttribute('disabled','disabled');
}
var input_height = dom.n('input');
input_height.setAttribute('type','text');
input_height.setAttribute('name','i_maxImgSize_height');
if(maxImgSize)
input_height.setAttribute('value',maxImgSize[1]);
else
{
input_height.setAttribute('value','');
input_height.setAttribute('disabled','disabled');
}
var td = dom.n('td');
td.appendChild(input);
td.appendChild(dom.text(' '));
td.appendChild(input_width);
td.appendChild(dom.text('x'));
td.appendChild(input_height);
td.appendChild(dom.text(' '+say.label_inBrackets_widthXheight));
tr.appendChild(td);
content.appendChild(tr);
// Scale Imagesize->
// <-memberlistSF
var tr = dom.n('tr');
var td = dom.n('td');
td.appendChild(dom.text( say.label_dukeAssistantActivated ));
tr.appendChild(td);
var input = dom.n('input');
input.setAttribute('value','true');
input.setAttribute('type','checkbox');
input.setAttribute('name','i_memberlistSF');
if(memberlistSF)
input.setAttribute('checked','checked');
var td = dom.n('td');
td.appendChild(input);
td.appendChild(dom.text( say.label_inBrackets_memberlist ))
tr.appendChild(td);
content.appendChild(tr);
// memberlistSF->
// <-synchronizingEnabled
var tr = dom.n('tr');
var td = dom.n('td');
td.appendChild(dom.text( say.label_synchronizingWithRemoteServer ));
tr.appendChild(td);
var input = dom.n('input');
input.setAttribute('value','true');
input.setAttribute('type','checkbox');
input.setAttribute('name','i_synchronizingEnabled');
if(synchronizingEnabled)
input.setAttribute('checked','checked');
var td = dom.n('td');
td.appendChild(input);
td.appendChild(dom.text( ' '+say.label_currentSyncServerURL+' "'+synchronizingURL+'"' ))
tr.appendChild(td);
content.appendChild(tr);
// synchronizingEnabled->
var frame = new chuanghu('dialog_settings');
frame.setTitle(say.label_settings);
frame.setInstructions(say.label_generalSettings);
frame.setButton('cancel',say.label_cancel);
frame.setButton('button',say.label_save,save_dialog_settings);
frame.addContent('node',content);
frame.render(document.getElementsByTagName('body')[0]);
}
function save_dialog_settings()
{
// <-Colour Threads
var select = dom.name('i_colourThreads')[0];
colourThreadsVar = parseInt(select.options[select.selectedIndex].value);
setValue('colourThreads',colourThreadsVar);
// Colour Threads->
// <-Replace Smilies
replaceSmiliesOn = dom.name('i_replaceSmilies')[0].checked?true:false;
setValue('replaceSmiliesOn',replaceSmiliesOn);
// Replace Smilies->
// <-Scale Fontsize
if(dom.name('i_scaleFontsize')[0].checked)
setValue('maxFontSize',dom.name('i_scaleFontsize_text')[0].value);
else
setValue('maxFontSize',0);
// Scale Fontsize->
// <-Scale Imgagesize
if(dom.name('i_maxImgSize')[0].checked)
setValue('maxImgSize',dom.name('i_maxImgSize_width')[0].value+'x'+dom.name('i_maxImgSize_height')[0].value);
else
setValue('maxImgSize',false);
// Scale Imagesize->
// <-memberlistSF
memberlistSF = dom.name('i_memberlistSF')[0].checked?true:false;
setValue('memberlistSF',memberlistSF);
// memberlistSF->
// <-synchronizingEnabled
synchronizingEnabled = dom.name('i_synchronizingEnabled')[0].checked?true:false;
setValue('synchronizingEnabled',synchronizingEnabled);
setValue('synchronizingCurrentVersion',0);
// synchronizingEnabled->
alert(say.alert_successfullySaved);
dom.id('dialog_settings').parentNode.removeChild(dom.id('dialog_settings'));
document.location.reload();
}
function dialog_sync()
{
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
// Create JSON
var es = new Array();
for(var p in names)
{
var str = '"'+p+'" : [\n';
str += ' "'+names[p][0]+'" , \n';
str += ' '+names[p][1]+' , \n';
str += ' "'+names[p][2]+'" , \n';
str += ' "'+names[p][3]+'" \n';
str += ' ]'
es.push(str);
}
var str = '{\n';
str += es.join(',\n');
str += '\n}';
// Base64 Encode JSON
var base64 = base64_encode(str);
// JSON Export Textarea
var textarea_json_export = dom.n('textarea');
textarea_json_export.setAttribute('style','float:left; white-space:pre-wrap; font-size:xx-small; ');
textarea_json_export.setAttribute('cols','70');
textarea_json_export.setAttribute('rows','20');
textarea_json_export.setAttribute('id','textarea_json_export');
textarea_json_export.appendChild(dom.text(str));
// Log Textarea
var textarea_sync_log = dom.n('textarea');
textarea_sync_log.setAttribute('style','float:left; white-space:pre-wrap; font-size:xx-small; ');
textarea_sync_log.setAttribute('cols','70');
textarea_sync_log.setAttribute('rows','20');
textarea_sync_log.setAttribute('id','textarea_sync_log');
//textarea_sync_log.addEventListener('keyup',function(event){ if(event.keyCode == 13) importJSONData(this.value); },false);
// Send Button
var input_send_button = dom.n('input');
input_send_button.setAttribute('type','button');
input_send_button.setAttribute('value',say.label_sendData);
input_send_button.addEventListener('click',function(){
do_sync(dom.id('textarea_json_export').value,dom.id('textarea_sync_log'));
},false);
var frame = new chuanghu('dialog_export');
frame.setTitle( say.label_syncData );
frame.setInstructions( say.label_functionOnlyForDeveloper );
frame.setButton('close',say.label_close);
frame.addContent('table',
{
0:[
dom.text(say.label_export),
dom.text(say.label_syncLog),
],
1:[
textarea_json_export,
textarea_sync_log
],
2:[
[
dom.text(ar.length+' '+say.label_NumberOfRecords),
'colspan=2'
]
],
3:[
input_send_button
]
},'border=0,');
frame.setPosition(150,60);
frame.render(document.getElementsByTagName('body')[0]);
}
function dialog_export()
{
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]?sub[4]:'');
}
// Create JSON
var es = new Array();
for(var p in names)
{
var str = '"'+p+'" : [\n';
str += ' "'+names[p][0]+'" , \n';
str += ' '+names[p][1]+' , \n';
str += ' "'+names[p][2]+'" , \n';
str += ' "'+names[p][3]+'" \n';
str += ' ]'
es.push(str);
}
var str = '{\n';
str += es.join(',\n');
str += '\n}';
// Base64 Encode JSON
var base64 = base64_encode(str);
// JSON Export Textarea
var textarea_json_export = dom.n('textarea');
textarea_json_export.setAttribute('style','float:left; white-space:pre-wrap; font-size:xx-small; ');
textarea_json_export.setAttribute('cols','70');
textarea_json_export.setAttribute('rows','20');
textarea_json_export.appendChild(dom.text(str));
// JSON Export Download Link
var a_json_download = dom.n('a');
a_json_download.setAttribute('href','data:application/octet-stream;base64,'+base64);
a_json_download.setAttribute('type','application/octet-stream');
a_json_download.appendChild(dom.text( say.label_jsonDownload ));
// JSON Input Textarea
var textarea_json_input = dom.n('textarea');
textarea_json_input.setAttribute('style','float:left; white-space:pre-wrap; font-size:xx-small; ');
textarea_json_input.setAttribute('cols','70');
textarea_json_input.setAttribute('rows','20');
textarea_json_input.setAttribute('id','textarea_json_input');
textarea_json_input.addEventListener('keyup',function(event){
if(event.keyCode == 13) importJSONData(this.value);
},false);
// Import Button
var input_import_button = dom.n('input');
input_import_button.setAttribute('type','button');
input_import_button.setAttribute('value',say.label_doImport);
input_import_button.addEventListener('click',function(){
importJSONData(dom.id('textarea_json_input').value);
},false);
var frame = new chuanghu('dialog_export');
frame.setTitle( say.label_exportData );
frame.setInstructions( say.label_functionOnlyForDeveloper );
frame.setButton('close',say.label_close);
frame.addContent('table',
{
0:[
dom.text(say.label_export),
dom.text(say.label_import),
],
1:[
textarea_json_export,
textarea_json_input
],
2:[
[
dom.text(ar.length+' '+say.label_NumberOfRecords),
'colspan=2'
]
],
3:[
[
a_json_download,
dom.text(' ('+say.label_aboutX+' '+round((base64.length*0.75)/1024,1)+'kB)')
],
input_import_button
]
},'border=0,');
frame.setPosition(150,60);
frame.render(document.getElementsByTagName('body')[0]);
}
function menu_extras()
{
if(dom.id('menu_extras'))
{
if(dom.id('menu_extras').style.display == 'none')
{
table = dom.id('menu_extras');
table.style.display = 'block';
}
else
{
dom.id('menu_extras').style.display = 'none';
return;
}
}
else
{
GM_addStyle('#menu_extras td { -moz-border-radius:5px; background:#C1A264 url("/graphic/screen/tableheader_bg3.png") repeat-x; }');
var table = dom.n('table');
table.setAttribute('id','menu_extras');
table.style.left = rel_left(dom.id('link_menu_extras')) + 'px';
if(dom.id('footer_left')) {
table.style.bottom = '25px';
}
else {
table.style.top = dom.id('link_menu_extras').offsetTop + 'px';
}
//table.style.backgroundColor = '#DED3B9';
table.style.background = '#f6ecd1 url("'+srcs.background_footer+'")';
//table.style.border = '#DED3B9 outset 3px';
table.style.border = '#95865f dotted 1px';
table.style.outline = '#95865f dotted 1px';
table.style.borderBottom = '0px';
table.style.position = 'absolute';
// url("/graphic/screen/tableheader_bg3.png") #C1A264 repeat-x
var tr = dom.n('tr');
var td = dom.n('td');
var a = dom.n('a');
a.href = '#';
a.appendChild(dom.text(say.label_settings));
dom.addEvent(a,'click',function()
{
dom.id('menu_extras').style.display = 'none';
dialog_settings();
return false;
});
td.appendChild(a);
tr.appendChild(td);
table.appendChild(tr);
if(synchronizingEnabled) {
var tr = dom.n('tr');
var td = dom.n('td');
var a = dom.n('a');
a.href = '#';
a.appendChild(dom.text( say.label_forceSync ));
dom.addEvent(a,'click',function()
{
dom.id('menu_extras').style.display = 'none';
synchronize(true);
return false;
});
td.appendChild(a);
tr.appendChild(td);
table.appendChild(tr);
}
var tr = dom.n('tr');
var td = dom.n('td');
var a = dom.n('a');
a.href = '#';
a.appendChild(dom.text( say.label_setupSync ));
dom.addEvent(a,'click',function()
{
dom.id('menu_extras').style.display = 'none';
dialog_setupSync(true);
return false;
});
td.appendChild(a);
6
tr.appendChild(td);
table.appendChild(tr);
var tr = dom.n('tr');
var td = dom.n('td');
var a = dom.n('a');
a.href = '#';
a.appendChild(dom.text( say.label_import_export ));
dom.addEvent(a,'click',function()
{
dom.id('menu_extras').style.display = 'none';
dialog_export();
return false;
});
td.appendChild(a);
tr.appendChild(td);
table.appendChild(tr);
var tr = dom.n('tr');
var td = dom.n('td');
var a = dom.n('a');
a.href = '#';
a.appendChild(dom.text( say.label_syncData ));
dom.addEvent(a,'click',function()
{
dom.id('menu_extras').style.display = 'none';
dialog_sync();
return false;
});
td.appendChild(a);
tr.appendChild(td);
table.appendChild(tr);
var tr = dom.n('tr');
var td = dom.n('td');
var a = dom.n('a');
a.href = '#';
a.appendChild(dom.text( say.label_backups ));
dom.addEvent(a,'click',function()
{
dom.id('menu_extras').style.display = 'none';
dialog_backups();
return false;
});
td.appendChild(a);
tr.appendChild(td);
table.appendChild(tr);
var tr = dom.n('tr');
var td = dom.n('td');
var a = dom.n('a');
a.href = '#';
a.appendChild(dom.text( say.label_factory_settings ));
dom.addEvent(a,'click',function()
{
dom.id('menu_extras').style.display = 'none';
var q = confirm(say.alert_resetToFactorySettings);
if(q)
{
var q = confirm( say.alert_reallyReset );
if(q)
{
setValue('reset',true);
document.location.reload();
}
}
});
td.appendChild(a);
tr.appendChild(td);
table.appendChild(tr);
var tr = dom.n('tr');
var td = dom.n('td');
var a = dom.n('a');
a.href = '#';
a.appendChild(dom.text( say.label_aboutMe ));
dom.addEvent(a,'click',function()
{
dom.id('menu_extras').style.display = 'none';
alert( say.alert_aboutMeString);
return false;
});
td.appendChild(a);
tr.appendChild(td);
table.appendChild(tr);
dom.id('ds_body').appendChild(table);
table.style.top = (parseInt(table.style.top) - table.clientHeight) + 'px';
}
}
function addAnswerEvents()
{
var elist = dom.id('forum_box').getElementsByTagName('table')[2].getElementsByTagName('tr');
for(var i = 1; i < elist.length; i++)
{
if(elist[i].getElementsByTagName('a')[0])
{
if(elist[i].getElementsByTagName('img')[0].src.indexOf('closed') == -1)
{
dom.addEvent(elist[i].getElementsByTagName('img')[0],'click',function() {
document.location.href = this.parentNode.getElementsByTagName('a')[0].href+'&answer=true&page=last';
});
}
}
}
}
function scaleFontSize()
{
if(maxFontSize <= 0)
return false;
var elist = dom.class('text');
for(var i = 0; i < elist.length; i++)
{
var nodeElements = elist[i].getElementsByTagName('*');
for(var x = 0; x < nodeElements.length; x++)
{
if(nodeElements[x].style)
{
if(nodeElements[x].style.fontSize)
{
if(parseInt(nodeElements[x].style.fontSize) > maxFontSize)
{
nodeElements[x].title = say.label_scaledFontSizeDownFromTo.replace(/%from%/g,parseInt(nodeElements[x].style.fontSize)).replace(/%to%/g,maxFontSize);
nodeElements[x].style.fontSize = maxFontSize+'pt';
}
}
}
}
}
}
function scaleImgSize()
{
if(maxImgSize == false)
return false;
var elist = dom.class('text');
for(var i = 0; i < elist.length; i++)
{
var imgs = elist[i].getElementsByTagName('img');
for(var x = 0; x < imgs.length; x++)
{
imgs[x].style.maxWidth = maxImgSize[0]+'px';
imgs[x].style.maxHeight = maxImgSize[1]+'px';
imgs[x].title = say.label_scaledImage;
imgs[x].addEventListener('click',function() {
this.style.maxWidth = '';
this.style.maxHeight = '';
},false);
}
}
}
function colourThreads()
{
var ar = colourThreadsNames.split(',');
var names = new Array();
for(var i = 0; i < ar.length; i++)
{
var sub = ar[i].split('='); // colour,warnings, notes, reasons
if(sub[0] && sub[1]) // 0 1 2 3
names[unescape(sub[0])] = new Array(sub[1],sub[2]?sub[2]:0,sub[3]?unescape(sub[3]):'',sub[4]!=undefined?sub[4]:'');
}
var elist = dom.class('text');
for(var n = 0,i=0; i < elist.length; i++)
{
// Jump the empty anchor link, except for last post
var a = elist[i].parentNode.getElementsByTagName('a')[0];
if(!a.firstChild)
a = elist[i].parentNode.getElementsByTagName('a')[1];
if(!a.firstChild)
a = elist[i].parentNode.getElementsByTagName('a')[2];
var name = a.firstChild.data;
name = dom.trim(name);
// shared forum thing
if(name.indexOf(' - '))
{
var new_name = name.split(' - ')[1];
if(names[new_name])
name = new_name;
}
/* alert(name);
alert(names[name]);
alert(names[escape(name)]);
alert(names[unescape(name)]); */
if(name.indexOf(' - ') != -1)
{
// this could be a player in a shared forum
// so, let's skip him to simplify it
GM_log('Player: '+name+' skipped');
a.parentNode.parentNode.style.backgroundImage = 'url('+srcs.chequer_plate+')';
a.parentNode.parentNode.style.backgroundRepeat = 'repeat-x';
}
else if(names[name])
{
if(colourThreadsVar == 1)
elist[i].style.backgroundColor = names[name][0];
else if(colourThreadsVar == 2)
a.parentNode.parentNode.style.backgroundColor = names[name][0];
// Quotes:
var quotes = elist[i].getElementsByClassName('quote_author');
for(var x = 0; x < quotes.length; x++)
{
// Extract author's name
var author = quotes[x].firstChild.data.split( say.ingameString_authorWrote_aboveAquote ).shift();
if(names[author])
{
if(colourThreadsVar == 1)
{
quotes[x].style.backgroundColor = names[author][0];
quotes[x].parentNode.nextSibling.getElementsByClassName('quote_message')[0].style.backgroundColor = names[author][0];
quotes[x].parentNode.parentNode.parentNode.style.border = '1px solid black';
quotes[x].parentNode.parentNode.parentNode.style.borderLeft = '0px';
}
else if(colourThreadsVar == 2)
{
quotes[x].style.backgroundColor = names[author][0];
quotes[x].parentNode.nextSibling.getElementsByClassName('quote_message')[0].style.border = names[author][0] + ' 3px solid';
}
}
}
}
else
{
// Search next Colour that is not in list
var n = 0;
var c = true;
while(c)
{
if(n > colours.length)
break;
var free = true;
for(var p in names)
{
if(names[p][0] == colours[n])
{
free = false;
break;
}
}
if(free)
break;
else
n++
}
names[name] = new Array(colours[n],0,'','')
if(colourThreadsVar == 1)
elist[i].style.backgroundColor = names[name][0];
else if(colourThreadsVar == 2)
a.parentNode.parentNode.style.backgroundColor = names[name][0];
// Quotes:
var quotes = elist[i].getElementsByClassName('quote_author');
for(var x = 0; x < quotes.length; x++)
{
// Extract author's name
var author = quotes[x].firstChild.data.split( say.ingameString_authorWrote_aboveAquote ).shift();
if(names[author])
{
if(colourThreadsVar == 1)
{
quotes[x].style.backgroundColor = names[author][0];
quotes[x].parentNode.nextSibling.getElementsByClassName('quote_message')[0].style.backgroundColor = names[author][0];
quotes[x].parentNode.parentNode.parentNode.style.border = '1px solid black';
quotes[x].parentNode.parentNode.parentNode.style.borderLeft = '0px';
}
else if(colourThreadsVar == 2)
{
quotes[x].style.backgroundColor = names[author][0];
quotes[x].parentNode.nextSibling.getElementsByClassName('quote_message')[0].style.border = names[author][0] + ' 3px solid';
}
}
}
n++;
}
}
var saveThing = new Array();
for(p in names)
{
void saveThing.push(escape(p) + '=' + names[p].join('='));
}
setValue('colourThreadsNames',saveThing.join(','));
}
function replaceSmilies()
{
if(!replaceSmiliesOn)
return true;
var elist = dom.class('text');
for(var i = 0; i < elist.length; i++)
{
for(var key in smilies)
{
if(smilies[key][0] == 'img')
{
if(elist[i].innerHTML.indexOf(key) != -1)
{
elist[i].innerHTML = elist[i].innerHTML.split(key).join( '<img title="'+key+'" alt="'+key+'" src="' +smilies[key][1] + '" />' );
}
}
}
}
}
function addPlayerLinksEvents()
{
GM_addStyle(' .clickedPlayerMenu { position:absolute;background-color:#F1EBDD;border:#804000 2px solid;padding:3px; } .clickedPlayerMenu a:hover { background-color:#F7EED3; } .normal_link { font-weight:bold; color: #804000; text-decoration:none; } .normal_link:active { font-weight:bold; color: #0082BE; text-decoration:none; } .normal_link:hover { font-weight:bold; color: #0082BE; text-decoration:none; }');
var elist = document.getElementsByTagName('a');
var i = 0;
while(elist[i])
{
if(elist[i].href.indexOf('screen=info_player') != -1)
{
var span = dom.n('span');
span.title = elist[i].href;
span.setAttribute('class','normal_link');
span.appendChild(elist[i].firstChild);
span.addEventListener('click',function(e) {
return clickedPlayerMenu(e,this);
},false);
span.addEventListener('dblclick',function() {
parent.parent.frames[0].location.href = this.title;
},false);
elist[i].parentNode.replaceChild(span,elist[i]);
i--;
}
++i;
}
}
function clickedPlayerMenu(e,span)
{
var x = rel_left(span);
var y = rel_top(span) + span.offsetHeight;
var id = span.title.match(/id=(\d+)/)[1];
var name = dom.trim(span.innerHTML);
var div = dom.n('div');
div.setAttribute('class','clickedPlayerMenu');
div.style.left = x + 'px';
div.style.top = y + 'px';
dom.tag('body')[0].appendChild(div);
var a = dom.n('a');
a.setAttribute('style','display:block; border-bottom:1px solid rgb(234,225,204); ');
a.href = span.title;
a.target = 'main';
a.appendChild(dom.text( say.label_open ));
div.appendChild(a);
var a = dom.n('a');
a.setAttribute('style','display:block; ');
a.href = '#';
a.addEventListener('click',function() {
dialog_playerMenu(name);
return false;
},false);
a.appendChild(dom.text( say.label_edit ));
div.appendChild(a);
/*
var a = dom.n('a');
a.setAttribute('style','display:block; border-bottom:1px solid rgb(234,225,204); ');
//a.href = 'game.php?screen=mail&mode=new&player='+id;
a.href = '#';
a.addEventListener('click',function(){
messageWindow(id);
this.parentNode.parentNode.removeChild(this.parentNode);
return false;
return false;
},false)
a.target = 'main';
a.appendChild(dom.text( say.label_newMessage ));
div.appendChild(a);
*/
var span = dom.n('span');
span.setAttribute('style','display:block; font-size:x-small; padding-top:3px;');
span.appendChild(document.createTextNode( say.label_rank ));
div.appendChild(span);
var a = dom.n('a');
a.setAttribute('style','display:block; ');
a.setAttribute('href','#');
a.addEventListener('click',function() {
go2Ranking(name,'player');
},false);
a.appendChild(document.createTextNode( say.label_player ));
div.appendChild(a);
var a = dom.n('a');
a.setAttribute('style','display:block; ');
a.setAttribute('href','#');
a.addEventListener('click',function() {
go2Ranking(name,'con_player');
},false);
a.appendChild(document.createTextNode( say.label_continent ));
div.appendChild(a);
var a = dom.n('a');
a.setAttribute('style','display:block; ');
a.setAttribute('href','#');
a.addEventListener('click',function() {
go2Ranking(name,'kill_player&type=att');
},false);
a.appendChild(document.createTextNode( say.label_oda ));
div.appendChild(a);
var a = dom.n('a');
a.setAttribute('style','display:block; ');
a.setAttribute('href','#');
a.addEventListener('click',function() {
go2Ranking(name,'kill_player&type=def');
},false);
a.appendChild(document.createTextNode( say.label_odd ));
div.appendChild(a);
var a = dom.n('a');
a.setAttribute('style','display:block; ');
a.setAttribute('href','#');
a.addEventListener('click',function() {
go2Ranking(name,'kill_player&type=all');
},false);
a.appendChild(document.createTextNode( say.label_od_total ));
div.appendChild(a);
var span = dom.n('span');
span.setAttribute('style','display:block; font-size:x-small; padding-top:3px;');
span.appendChild(document.createTextNode( say.label_toolPages ));
div.appendChild(span);
var a = dom.n('a');
a.setAttribute('style','display:block; border-bottom:1px solid rgb(234,225,204); ');
a.href = 'http://'+lang+world+'.twplus.org/file/player/'+id+'/';
a.target = '_blank';
a.appendChild(dom.text( say.label_TWPlus ));
div.appendChild(a);
var a = dom.n('a');
a.setAttribute('style','display:block; border-bottom:1px solid rgb(234,225,204); ');
a.href = 'http://www.dsreal.de/index.php?screen=file&id='+id+'&mode=player&world='+lang+world;
a.target = '_blank';
a.appendChild(dom.text( say.label_DSReal ));
div.appendChild(a);
var a = dom.n('a');
a.setAttribute('style','display:block; border-bottom:1px solid rgb(234,225,204); ');
a.href = 'http://de.my-webtool.com/games/die-staemme/'+lang+world+'/users/'+id;
a.target = '_blank';
a.appendChild(dom.text( say.label_myWebtool ));
div.appendChild(a);
var a = dom.n('a');
a.setAttribute('style','display:block; border-bottom:1px solid rgb(234,225,204); ');
a.href = 'http://www.staemme-statistik.de/'+world+'/'+id+'.html';
a.target = '_blank';
a.appendChild(dom.text( say.label_staemmeStatistik ));
div.appendChild(a);
var img = new Image();
img.alt = 'Close';
img.src = srcs.close;
img.setAttribute('style','position:absolute; top:0px; right:0px; ');
img.addEventListener('click',function(){
this.parentNode.parentNode.removeChild(this.parentNode);
},false);
div.appendChild(img);
return false;
}
function go2Ranking(player_name,mode)
{
var form = document.createElement('form');
form.setAttribute('method','post');
form.setAttribute('target','main');
form.setAttribute('action','/game.php?screen=ranking&mode='+mode+'&search');
form.setAttribute('id','rankingForm');
var name_i = document.createElement('input');
name_i.setAttribute('type','hidden');
name_i.setAttribute('name','name');
name_i.setAttribute('value',player_name);
form.appendChild(name_i);
document.getElementsByTagName('body')[0].appendChild(form);
document.getElementById('rankingForm').submit();
}
function addInviteLinks()
{
var content = dom.id('ally_content');
var a = dom.n('a');
a.setAttribute('href','#dukeassistantBar_anchor');
dom.addEvent(a,'click',function()
{
if(confirm( say.alert_reallyWithdrawAllInvitations ))
returnAllInvitations();
return false;
});
a.appendChild(dom.text(say.label_withdrawAllInvitations));
content.appendChild(a);
}
function returnAllInvitations()
{
var name_input = document.getElementsByName('name')[0];
var table = dom.id('ally_content').getElementsByTagName('table')[0];
var elist = table.getElementsByTagName('tr');
var i = 1;
while(elist[i])
{
if(elist[i].getElementsByTagName('a')[1])
var link = elist[i].getElementsByTagName('a')[1].href;
else
var link = elist[i].getElementsByTagName('a')[0].href;
var img = new Image();
img.src = link;
elist[i].getElementsByTagName('a')[0].parentNode.appendChild(img);
++i;
}
alert( say.label_finished );
}
function chuanghu(id)
{
this.id = id;
while(dom.id(this.id))
this.id = id+'_'+dom.maxRand(100);
this.position = false;
this.content = false;
this.titlebar = false;
this.instructions = false;
this.buttonset = false;
this.primaryKeys = {
'buttons':0,
'content':0
};
this.rendered = false;
this.setTitle = function(str)
{
this.titlebar = dom.n('div');
this.titlebar.id = this.id+'_titlebar';
this.titlebar.style.height = '20px';
this.titlebar.style.verticalAlign = 'bottom';
this.titlebar.style.paddingRight = '5px';
this.titlebar.style.paddingBottom = '0px';
this.titlebar.style.color = 'black';
this.titlebar.style.background = '#c1aa7b url('+srcs['dialog_titlebar_bg']+') repeat-x top left';
this.titlebar.style.textAlign = 'right';
this.titlebar.style.fontFamily = 'Trebuchet MS,Verdana,sans-serif';
this.titlebar.style.fontWeight = 'bolder';
this.titlebar.style.borderRadius = '10px 10px 0px 0px';
this.titlebar.appendChild(dom.text( str ));
var img = new Image();
img.src = 'http://www.c1b1.de/close.png';
img.alt = this.id;
img.title = say.close;
img.style.position = 'absolute';
img.style.left = '2px';
img.style.top = '2px';
dom.addEvent(img,'click',function() {
dom.id(this.alt).parentNode.removeChild(dom.id(this.alt));
});
this.titlebar.appendChild(img);
return this.titlebar.id;
}
this.setInstructions = function(str)
{
this.instructions = dom.n('p');
this.instructions.id = this.id+'_instructions';
this.instructions.appendChild(dom.text( str ));
return this.instructions.id;
}
this.addContent = function(type,obj,special)
{
switch(type)
{
case 0:
case 'table':
var main = dom.n('table');
main.setAttribute('id',this.id+'_content_n'+(++this.primaryKeys.content));
var special = special.split(',');
for(var i = 0, len = special.length; len > i; i++ )
{
if(special[i])
{
var tmp = special[i].split('=');
main.setAttribute(tmp[0],tmp[1]);
}
}
var obj = eval(obj);
for(var attr in obj)
{
var tr = dom.n('tr');
for(var a = 0, alen = obj[attr].length; alen > a; a++ )
{
if(obj[attr][a] != undefined)
{
var td = dom.n('td');
if(obj[attr][a][0] != undefined && obj[attr][a][0].tagName != 'OPTION')
{
if(obj[attr][a][0] !== false)
{
td.appendChild(obj[attr][a][0]);
// Attributes
var attributes = new Object();
for(var i = 1, len = obj[attr][a].length; len > i; i++)
{
if(typeof(obj[attr][a][i]) == typeof('string')) // If string => attribute
{
var tmp = obj[attr][a][i].split('=');
td.setAttribute(tmp[0],tmp[1]);
}
else // Else if object => append node
{
td.appendChild(obj[attr][a][i]);
}
}
}
}
else
{
td.appendChild(obj[attr][a]);
}
}
if(td)
tr.appendChild(td);
}
main.appendChild(tr);
}
break;
case 1:
case 'node':
if(obj)
var main = obj;
else
return false;
break;
default:
return false;
}
if(this.content)
this.content.appendChild(main);
else
{
this.content = dom.n('div');
this.content.appendChild(main);
}
return main.id;
}
this.setButton = function(type,text,fnctn)
{
if(this.buttonset === false)
{
this.buttonset = dom.n('p');
}
switch(type)
{
case 0:
case 'cancel':
case 1:
case 'close':
var button = dom.n('input');
button.setAttribute('value', text);
button.setAttribute('type','button');
button.setAttribute('id',this.id+'_button'+(++this.primaryKeys.buttons));
if(type == 'cancel' || type == 0)
dom.addEvent(button,'click',function()
{
if(confirm( say.alert_unsavedSettingsAreLostWhenYouExitNow ))
dom.id(id).parentNode.removeChild(dom.id(id));
});
else
dom.addEvent(button,'click',function()
{
dom.id(id).parentNode.removeChild(dom.id(id));
});
break;
case 2:
case 'button':
var button = dom.n('input');
button.setAttribute('value', text);
button.setAttribute('type','button');
button.setAttribute('id',this.id+'_button'+(++this.primaryKeys.buttons));
dom.addEvent(button,'click',fnctn);
break;
case 3:
case 'submit':
var button = dom.n('input');
button.setAttribute('value', text);
button.setAttribute('type','submit');
button.setAttribute('id',this.id+'_button'+(++this.primaryKeys.buttons));
if(fnctn)
dom.addEvent(button,'click',fnctn);
break;
default:
return false;
}
this.buttonset.appendChild(button);
return button.id;
}
this.setPosition = function(x,y,p)
{
if(x == 'id')
{
x = rel_left(dom.id(y));
y = rel_top(dom.id(y));
if(p)
{
x+=p;
y+=p;
}
}
if(this.rendered)
{
dom.id(this.id).style.left = x + 'px';
dom.id(this.id).style.top = y + 'px';
}
else
this.position = new Array(x+'px',y+'px');
}
this.render = function(obj)
{
this.rendered = true;
var div = dom.n('div');
div.id = this.id;
div.style.zIndex = ++c_zindex;
div.style.position = 'absolute';
div.style.left = '300px';
div.style.top = '60px';
div.style.minHeight = '50px';
div.style.minWidth = '150px';
div.style.background = '#FFF5DA';
//div.style.border = '3px solid #c1aa7b';
div.style.border = '3px solid Black';
div.style.borderRadius = '10px';
div.style.MozBorderRadius = '5px';
if(this.position)
{
div.style.left = this.position[0];
div.style.top = this.position[1];
}
if(this.titlebar)
div.appendChild(this.titlebar);
if(this.instructions)
div.appendChild(this.instructions)
if(this.content)
div.appendChild(this.content);
if(this.buttonset)
div.appendChild(this.buttonset);
if(!obj)
document.getElementsByTagName('body')[0].appendChild(div);
else
obj.appendChild(div);
// Foreground onlick...
dom.addEvent(this.titlebar,'click',function()
{
if(this.parentNode.style.zIndex < c_zindex)
this.parentNode.style.zIndex = ++c_zindex;
});
// ...foreground onlick
// Drabable part...
if(true)
{
// Save current Position of the element
var current_position = new Array( parseInt(div.style.left) , parseInt(div.style.top) );
var active = false;
var click_position;
var clone = false;
dom.addEvent(this.titlebar?this.titlebar:div,'mousedown',function(e)
{
// Clone Node to work with original
if(clone)
{
try {
clone.parentNode.removeChild(clone);
clone = false;
}
catch(e) {}
}
clone = div.cloneNode(true);
div.parentNode.insertBefore(clone,div);
// Set original semitransparent
div['style']['opacity'] = 0.5;
// save position
current_position[0] = parseInt( (this.id.split('_').pop()=='titlebar'?this.parentNode:this).style.left );
current_position[1] = parseInt( (this.id.split('_').pop()=='titlebar'?this.parentNode:this).style.top );
click_position = new Array((document.all?window.event.clientX:e.pageX) - current_position[0],(document.all?window.event.clientY:e.pageY) - current_position[1]);
// Set cursor
(this.id.split('_').pop()=='titlebar'?this.parentNode:this) .style.cursor = 'move';
active = true;
});
dom.addEvent(div,'mouseup',function()
{
// Remove cursor
this.style.cursor = 'default';
active = false;
// Remove semitransparent
div['style']['opacity'] = 1.0;
// Remove clone
try {
clone.parentNode.removeChild(clone);
clone = false;
}
catch(e) {}
});
dom.addEvent(document,'mousemove',function(e)
{
if(active)
{
var obj = div;
obj.style.left = ((document.all?window.event.clientX:e.pageX) - click_position[0]) + 'px';
obj.style.top = ((document.all?window.event.clientY:e.pageY) - click_position[1]) + 'px';
}
});
}
// ...drabable part
// Hide on doubleclick...
if(true)
{
var opacity_changing;
dom.addEvent(div,'dblclick',function(e)
{
var current_opacity = div.style.opacity;
opacity_changing = window.setInterval(function()
{
if(parseFloat(div.style.opacity) >= 0.3)
div.style.opacity = parseFloat(div.style.opacity)- 0.1;
else
window.clearInterval(opacity_changing);
},100);
});
}
// ...hide on doubleclick
// Fully enlarge on middleclick...
if(true)
{
var size_changing;
var mainTableWidth;
var mainTableHeight;
var mainTableOffsetLeft;
var mainTableOffsetTop;
window.clone = false;
dom.addEvent(div,'mouseup',function(e)
{
if(e.button == 1)
{
mainTableWidth = parseInt(dom.class('main')[0].clientWidth);
mainTableHeight = parseInt(dom.class('main')[0].clientHeight);
mainTableOffsetLeft = rel_left(dom.class('main')[0]);
mainTableOffsetTop = rel_top(dom.class('main')[0]);
// Clone Node to work with clone
if(clone !== false)
{
clone.parentNode.removeChild(clone);
clone = false;
}
clone = div.cloneNode(true);
clone.style.outline = '3px dashed black';
clone.style.background = 'transparent';
clone.style.border = '0px';
clone.style.width = div.clientWidth;
clone.style.height = div.clientHeight;
dom.removeChilds(clone);
div.parentNode.insertBefore(clone,div);
div.style.display = 'none';
size_changing = window.setInterval(function()
{
var a = false;
if(parseInt(clone.clientWidth) < mainTableWidth)
{
clone.style.width = parseInt(clone.clientWidth) + 30 + 'px';
a = true;
}
if(parseInt(clone.offsetLeft) > mainTableOffsetLeft)
{
clone.style.left = parseInt(clone.offsetLeft) - 10 + 'px';
a = true;
}
if(parseInt(clone.clientHeight) < mainTableHeight)
{
clone.style.height = parseInt(clone.clientHeight) + 30 + 'px';
a = true;
}
if(parseInt(clone.offsetTop) > mainTableOffsetTop)
{
clone.style.top = parseInt(clone.offsetTop) - 10 + 'px';
a = true;
}
if(a === false)
{
window.clearInterval(size_changing);
div.style.opacity = 1.0;
div.style.width = clone.style.width;
div.style.height = clone.style.height;
div.style.left = clone.style.left;
div.style.top = clone.style.top;
div.style.display = 'block';
// Remove clone
clone.parentNode.removeChild(clone);
clone = false;
}
},100);
}
});
}
// ...fully enlarge on middleclick
// Enlarge part...
if(true)
{
// Save current Position of the element
var current_position = new Array( parseInt(div.style.left) , parseInt(div.style.top) );
// Save min size of the element
var min_size = new Array( parseInt(div.clientWidth) , parseInt(div.clientHeight) );
var enlarge_active = false;
dom.addEvent(div,'mousedown',function(e)
{
// Save current Position of the element
current_position = new Array( parseInt(div.style.left) , parseInt(div.style.top) );
if( this.clientWidth - ((document.all?window.event.clientX:e.pageX) - current_position[0]) > 10)
return false;
if( this.clientHeight - ((document.all?window.event.clientY:e.pageY) - current_position[1]) > 10)
return false;
// Set original semitransparent
div['style']['opacity'] = 0.5;
// save position
current_position[0] = parseInt( this.style.left );
current_position[1] = parseInt( this.style.top );
//click_position = new Array((document.all?window.event.clientX:e.pageX) - current_position[0],(document.all?window.event.clientY:e.pageY) - current_position[1]);
// Set cursor
this.style.cursor = 'se-resize';
enlarge_active = true;
});
dom.addEvent(div,'mouseup',function()
{
// Remove cursor
this.style.cursor = 'default';
enlarge_active = false;
// Remove semitransparent
div['style']['opacity'] = 1.0;
});
dom.addEvent(document,'mousemove',function(e)
{
if(enlarge_active)
{
obj = div;
var new_width = obj.clientWidth + ((document.all?window.event.clientX:e.pageX) - (current_position[0]+obj.clientWidth));
var new_height = obj.clientHeight + ((document.all?window.event.clientY:e.pageY) - (current_position[1]+obj.clientHeight));
obj.style.width = (new_width>=min_size[0]?new_width:min_size[0]) + 'px';
obj.style.height = (new_height>=min_size[1]?new_height:min_size[1]) + 'px';
}
});
// Cursor onmouseover:
dom.addEvent(div,'mousemove',function(e)
{
if(!enlarge_active)
{
// save position
current_position[0] = parseInt( this.style.left );
current_position[1] = parseInt( this.style.top );
if(
this.clientWidth - ((document.all?window.event.clientX:e.pageX) - current_position[0]) > 3
||
this.clientHeight - ((document.all?window.event.clientY:e.pageY) - current_position[1]) > 3
)
{
// Set cursor
div.style.cursor = 'default';
}
else
{
// Set cursor
div.style.cursor = 'se-resize';
}
}
});
}
// ...enlarge part
return div.id;
}
}
function rel_top(e)
{
var y = 0;
while(e)
{
y += e.offsetTop + e.clientTop;
e = e.offsetParent;
}
return y;
}
function rel_left(e)
{
var x = 0;
while(e)
{
x += e.offsetLeft + e.clientLeft;
e = e.offsetParent;
}
return x;
}
function bar()
{
if(dom.id('dukeassistantBar'))
return false;
if(dom.id('footer_left')) {
var footer = dom.id('footer');
var footer_left = dom.id('footer_left');
var a = dom.n('a');
a.setAttribute('id','dukeassistantBar_anchor');
a.setAttribute('name','dukeassistantBar_anchor');
footer_left.appendChild(a);
var a = dom.n('a');
a.setAttribute('href','#dukeassistantBar_anchor');
dom.addEvent(a,'click',function()
{
menu_extras();
return false;
});
a.setAttribute('id','link_menu_extras');
a.appendChild(dom.text(say.label_extras));
footer_left.insertBefore(dom.text(String.fromCharCode(160)+'-'+String.fromCharCode(160)),footer_left.firstChild);
footer_left.insertBefore(a,footer_left.firstChild);
var rightfont = dom.n('span');
rightfont.setAttribute('id','dukeassistantBar');
rightfont.setAttribute('style','float:left; margin-top:10px; font-size:smaller; opacity:0.7; ');
rightfont.appendChild(dom.text( say._name + ' (' + version + ')'));
footer.insertBefore(rightfont,footer.firstChild);
} else {
var div = dom.n('div');
div.setAttribute('id','adIntBar');
div.style.backgroundColor = 'rgb(243,237,223)';
div.style.border = 'rgb(128,64,0) 2px solid';
div.style.marginTop = '15px';
div.style.padding = '5px';
var leftfont = dom.n('span');
leftfont.setAttribute('style','float:left; ');
var a = dom.n('a');
a.setAttribute('id','dukeassistantBar_anchor');
a.setAttribute('name','dukeassistantBar_anchor');
leftfont.appendChild(a);
var a = dom.n('a');
a.setAttribute('href','#dukeassistantBar_anchor');
dom.addEvent(a,'click',function()
{
menu_extras();
return false;
});
a.setAttribute('id','link_menu_extras');
a.appendChild(dom.text(say.label_extras));
leftfont.appendChild(a);
div.appendChild(leftfont);
var rightfont = dom.n('span');
rightfont.setAttribute('style','float:right; font-size:smaller; opacity:0.7; ');
rightfont.appendChild(dom.text( say._name + ' (' + version + ')'));
div.appendChild(rightfont);
var clearfont = dom.n('div');
clearfont.setAttribute('style','clear:both; ');
div.appendChild(clearfont);
if(dom.id('forum_box')) {
return dom.id('forum_box').appendChild(div);
} else {
return dom.id('ds_body').appendChild(div);
}
}
}
function rand(max)
{
return Math.ceil(Math.random() * 1000) % max + 1;
}
function invColour(s)
{
return '#'+new RegExp(/(\w{6})$/).exec('00000'+Number(16777215 - parseInt(new RegExp(/([A-Fa-f0-9]{6})$/).exec(s), 16)).toString(16))[1];
}
function randomStr(min,max,chars)
{
if(!chars)
{
chars = " 01"; // Zeichen die im String vorkommen dürfen
}
stringlength = rand(max);
i = 0;
result = "";
while(i < stringlength || i < min)
{
result = result + chars[rand(chars.length-1)];
i++;
}
return result;
}
function html()
{
this.n = function(type) // Returns a new element of the type [type]
{
return document.createElement(type);
}
this.text = function(c) // Returns a new textnode with the content [c]
{
return document.createTextNode(c);
}
this.img = function(c) // Returns a new image
{
if(c)
{
var img = new Image();
img.src = c;
return img;
}
return new Image();
}
// Search functions
this.id = function(type) // Returns the element with the id [type]
{
return document.getElementById(type);
}
this.tag = function(type) // Returns the list ob elements with the tag given in [type]
{
return document.getElementsByTagName(type);
}
this.name = function(type) // Returns the list ob elements with the tag name given in [type]
{
return document.getElementsByName(type);
}
this.class = function(type) // Returns the list ob elements with the class given in [type]
{
return document.getElementsByClassName(type);
}
this.findByAttr = function(obj,attr,value) // Returns a list ob elements that have an attribute [attr] with the value [value]
{
var len = obj.getElementsByTagName('*').length;
var list = new Object();
var a = 0;
for(var i = 0; i < len; i++)
{
if(obj.getElementsByTagName('*')[i][attr] == value)
{
list[a] = obj.getElementsByTagName('*')[i];
a++;
}
}
list['length'] = a;
return list;
}
this.findByInner = function(obj,value) // Returns a list ob elements that contain the value [value]
{
var len = obj.getElementsByTagName('*').length;
var list = new Object();
var a = 0;
for(var i = 0; i < len; i++)
{
if(obj.getElementsByTagName('*')[i].firstChild)
{
if(obj.getElementsByTagName('*')[i].firstChild.data)
{
if(obj.getElementsByTagName('*')[i].firstChild.data.indexOf(value) != -1)
{
list[a] = obj.getElementsByTagName('*')[i];
a++;
}
}
}
}
list['length'] = a;
return list;
}
this.getNextElement = function(obj,tname) {
var tname = tname.toLowerCase();
var obj = obj.nextSibling;
while(true)
{
if(!obj)
return false;
if(!obj.tagName)
obj = obj.nextSibling;
else if(obj.tagName.toLowerCase() == tname)
return obj;
else
obj = obj.nextSibling;
}
return obj;
}
this.appendChilds = function(obj)
{
for(var i = 1; i < arguments.length; i++)
arguments[0].appendChild(arguments[i]);
}
this.removeChilds = function(obj)
{
while(obj.firstChild)
{
obj.removeChild(obj.firstChild);
}
}
this.dumpObj = function(e,html,count)
{
if(!count)
count = 0;
var spaces = ' ';
for(var i = 0; i < count; i++)
spaces += ' ';
if(html)
n = '<br />\n';
else
n = '\n';
var o = '( '+typeof(e)+' )'+n;
for(var p in e)
o+= spaces+p+' = '+'( '+typeof(e[p])+' ) '+(typeof(e[p]) == 'object'?(this.dumpObj(e[p],html,(count+2))):e[p])+n;
return o;
}
this.grabText = function(node,maxDepth)
{
if(3 == node.nodeType)
return node.nodeValue;
else if((1 == node.nodeType) && (0 < maxDepth))
{
var result = '';
for(var i = 0; i < node.childNodes.length; i++)
{
result += grabText(node.childNodes[i],maxDepth - 1);
}
return result;
}
return '';
}
// Gets the element (target) of a DOM Mouse Event Object
// Returns false if there's no element
this.mouseEventTarget = function(e)
{
if(e.target) // Mozilla, Opera, Safari
return e.target;
else if (e.srcElement) // IE
return e.srcElement;
else // No Target
return false;
}
// Flexible Javascript Events by John Resig (ejohn.org)
// http://ejohn.org/projects/flexible-javascript-events/
this.addEvent = function( obj, type, fn )
{
if(obj.attachEvent)
{
obj['e'+type+fn] = fn;
obj[type+fn] = function(){
obj['e'+type+fn](window.event);
}
obj.attachEvent( 'on'+type, obj[type+fn] );
}
else
obj.addEventListener( type, fn, false );
}
this.removeEvent = function( obj, type, fn )
{
if(obj.detachEvent)
{
obj.detachEvent( 'on'+type, obj[type+fn] );
obj[type+fn] = null;
}
else
obj.removeEventListener( type, fn, false );
}
this.valuePosition = function(arr,value)
{
for(var i = 0, len = arr.length; i < len; i++)
{
if(arr[i] == value)
return i;
}
return false;
}
this.maxRand = function(max)
{
return Math.ceil(Math.random() * 1000) % max + 1;
}
this.trim = function(str)
{
return str.replace(/^\s+/, '').replace(/\s+$/, '');
}
return true;
}
function in_array(obj,elem)
{
for(var attr in obj)
{
if(obj[attr] == elem)
return true;
}
return false;
}
function in_array_ext(obj,elem,subindex)
{
for(var attr in obj)
{
if(obj[attr][subindex] == elem)
return true;
}
return false;
}
function round(i,p)
{
return parseFloat(parseFloat(i).toFixed(p));
}
function str_ireplace ( search, replace, subject ) {
// http://kevin.vanzonneveld.net
// + original by: Martijn Wieringa
// + input by: penutbutterjelly
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + tweaked by: Jack
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Onno Marsman
// * example 1: str_ireplace('l', 'l', 'HeLLo');
// * returns 1: 'Hello'
var i, k = '';
var searchl = 0;
search += '';
searchl = search.length;
if (!(replace instanceof Array)) {
replace = new Array(replace);
if (search instanceof Array) {
// If search is an array and replace is a string,
// then this replacement string is used for every value of search
while (searchl > replace.length) {
replace[replace.length] = replace[0];
}
}
}
if (!(search instanceof Array)) {
search = new Array(search);
}
while (search.length>replace.length) {
// If replace has fewer values than search,
// then an empty string is used for the rest of replacement values
replace[replace.length] = '';
}
if (subject instanceof Array) {
// If subject is an array, then the search and replace is performed
// with every entry of subject , and the return value is an array as well.
for (k in subject) {
subject[k] = str_ireplace(search, replace, subject[k]);
}
return subject;
}
searchl = search.length;
for (i = 0; i < searchl; i++) {
reg = new RegExp(search[i], 'gi');
subject = subject.replace(reg, replace[i]);
}
return subject;
}
function utf8_encode ( string ) {
// http://kevin.vanzonneveld.net
// + original by: Webtoolkit.info (http://www.webtoolkit.info/)
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: sowberry
// + tweaked by: Jack
// + bugfixed by: Onno Marsman
// + improved by: Yves Sucaet
// + bugfixed by: Onno Marsman
// * example 1: utf8_encode('Kevin van Zonneveld');
// * returns 1: 'Kevin van Zonneveld'
string = (string+'').replace(/\r\n/g, "\n").replace(/\r/g, "\n");
var utftext = "";
var start, end;
var stringl = 0;
start = end = 0;
stringl = string.length;
for (var n = 0; n < stringl; n++) {
var c1 = string.charCodeAt(n);
var enc = null;
if (c1 < 128) {
end++;
} else if((c1 > 127) && (c1 < 2048)) {
enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
} else {
enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
}
if (enc != null) {
if (end > start) {
utftext += string.substring(start, end);
}
utftext += enc;
start = end = n+1;
}
}
if (end > start) {
utftext += string.substring(start, string.length);
}
return utftext;
}
function base64_encode( data ) {
// http://kevin.vanzonneveld.net
// + original by: Tyler Akins (http://rumkin.com)
// + improved by: Bayron Guevara
// + improved by: Thunder.m
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// - depends on: utf8_encode
// * example 1: base64_encode('Kevin van Zonneveld');
// * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
// mozilla has this native
// - but breaks in 2.0.0.12!
//if (typeof window['atob'] == 'function') {
// return atob(data);
//}
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = ac = 0, enc="", tmp_arr = [];
data = utf8_encode(data);
do { // pack three octets into four hexets
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);
bits = o1<<16 | o2<<8 | o3;
h1 = bits>>18 & 0x3f;
h2 = bits>>12 & 0x3f;
h3 = bits>>6 & 0x3f;
h4 = bits & 0x3f;
// use hexets to index into b64, and append result to encoded string
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);
enc = tmp_arr.join('');
switch( data.length % 3 ){
case 1:
enc = enc.slice(0, -2) + '==';
break;
case 2:
enc = enc.slice(0, -1) + '=';
break;
}
return enc;
}
}
ds_duke_forum();