// ==UserScript==
// @name The West - Color tchat
// @namespace TomRobert
// @author Falc0n.RG (updated by Tom Robert)
// @description Adds new features to the chat of The West
// @include https://*.the-west.*/game.php*
// @version 0.2.9.6
//
// @history 26/02/2016 : 0.2.9.6 "hearts!" icon added, new jscolor version
// @history 30/03/2015 : 0.2.9.5 "easter!" icon added
// @history 28/03/2015 : 0.2.9.4 update function fixed
// @history 14/03/2015 : 0.2.9.3 little bugfix
// @history 08/03/2015 : 0.2.9.2 add polish translation (TeeNOmore127), beta really fixed
// @history 26/02/2015 : 0.2.9.1 more emojis
// @history 25/02/2015 : 0.2.9 Emoji Update!
// @history 11/02/2015 : 0.2.8.2 fix for the west beta
// @history 14/01/2015 : 0.2.8.1 TheWestApi improvement
// @history 07/01/2015 : 0.2.8 correct german translation (Tom Robert)
// @history 07/01/2015 : 0.2.8 active for the west 2.16+
// @history 19/05/2014 : 0.2.7.3 active for the west 2.09
// @history 19/05/2014 : 0.2.7.3 bug fix in selectbox
// @history 22/01/2014 : 0.2.7.2 active for the west 2.08
// @history 13/11/2013 : 0.2.7.1 active for the west 2.07
// @history 17/06/2013 : 0.2.7 active for the west 2.06
// @history 15/06/2013 : 0.2.7 add flip mode [ hiden ]
// @history 31/06/2013 : 0.2.7 save color for each tchat
// @history 31/06/2013 : 0.2.7 add default/custom color for each tchat
// @history 27/06/2013 : 0.2.6.3 active for the west 2.05
// @history 18/06/2013 : 0.2.6.2 Bug fix smiley in first with one color tag
// @history 17/06/2013 : 0.2.6.1 Bug fix for firefox
// @history 17/06/2013 : 0.2.6 Disabled format for bdf
// @history 17/06/2013 : 0.2.6 Add multi chat windows support
// @history 15/06/2013 : 0.2.5.2 fix bold with one color tag
// @history 25/05/2013 : 0.2.5.1 fix linear-gradiant to opera
// @history 13/05/2013 : 0.2.5 add support to the west 2.042 (beta)
// @history 13/02/2013 : 0.2.4.2 Bugfix on colorTxt.Window with Firefox
// @history 13/02/2013 : 0.2.4.1 Bugfix inserRule with Firefox
// @history 13/02/2013 : 0.2.4 active for the west 2.03
// @history 09/02/2013 : 0.2.3 [Only Beta2.03 version] rewrite for the west v2.03
// @history 23/11/2012 : 0.2.2 rewrite and optimize the script
// @history 23/11/2012 : 0.2.2 bugfix : update
// @history 25/10/2012 : 0.2.1 finish text input and load/save system
// @history 23/10/2012 : 0.2.1 add text input custom color
// @history 23/10/2012 : 0.2.1 add load/save system ( not full )
// @history 23/10/2012 : 0.2.1 add more preset color ( light red, pink, green )
// @history 22/10/2012 : 0.2.1 bugfix leave chat
// @history 18/10/2012 : 0.2.0 active for the west 2.0
// @history 14/10/2012 : 0.1.9 [Only Beta2.0 version] add more smilies
// @history 06/10/2012 : 0.1.9 [Only Beta2.0 version] add selectbox smilies
// @history 05/10/2012 : 0.1.9 [Only Beta2.0 version] Add item tag
// @history 15/09/2012 : 0.1.9 [Only Beta2.0 version] rewrite to the west v2.0 [many function disabled]
// @history 15/10/2012 : 0.1.8.1 adapt the system update for 2.0
// @history 15/09/2012 : 0.1.8 disabled the script in 2.0 and beta
// @history 11/05/2012 : 0.1.7 add bdf format
// @history 11/05/2012 : 0.1.6 change smiley insert [ bug with opera ][chrome and firefox Good]
// @history 11/05/2012 : 0.1.6 add bolt choice
// @history 11/05/2012 : 0.1.6 add bdf color change
// @history 11/05/2012 : 0.1.6 add custom color save
// @history 04/05/2012 : 0.1.6 change prompt for tell name select
// @history 04/05/2012 : 0.1.5 add opera support
// @history 04/05/2012 : 0.1.5 add update system for chrome and firefox , opera
// @history 04/05/2012 : 0.1.4b debug Multi Language system ( sorry for the missing )
// @history 30/04/2012 : 0.1.4 add Multi Language system
// @history 30/04/2012 : 0.1.3 change all <a> to <div>
// @history 30/04/2012 : 0.1.3 Bug Fix command color
// @history 30/04/2012 : 0.1.3 add smiley detect and activate smiley Div ( and change this )
// @history 30/04/2012 : 0.1.3 change CBImg
// @history 30/04/2012 : 0.1.3 add preset color : '505606607709809'
// @history 29/04/2012 : 0.1.2 Bug Fix
// @history 29/04/2012 : 0.1.1 add color tchat window
// @history 27/04/2012 : 0.1.0 First Public Version
// @grant none
//
// @TODO Bug avec addSmToTxt dans opera perte de la selection
/*********************************************************************************************************************
* jscolor, JavaScript Color Picker
*
* @version 1.4.5
* @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
* @author Jan Odvarko, http://odvarko.cz
* @created 2008-06-15
* @updated 2015-09-19
* @link http://jscolor.com
**********************************************************************************************************************/
// ==/UserScript==
(function (e) {
var t = document;
var n = document.createElement('script');
n.type = 'application/javascript';
n.textContent = '(' + e + ')();';
(t.body || t.head || t.documentElement).appendChild(n);
n.parentNode.removeChild(n);
}) (function () {
colorTxt = {
version: '0.2.9.6',
name: 'Color tchat',
author: 'Falc0n.RG (updated by Tom Robert)',
minGame: '2.0',
maxGame: Game.version.toString(),
website: 'https://greasyfork.org/scripts/7355',
updateUrl: 'https://raw.githack.com/TomRobert/tw/master/sU.js',
updateAd: 'http://adf.ly/1XWlcN',
DATA: {
},
Window: {
},
Chat: {
},
Tools: {
}
};
colorTxt.Lang = function (e) {
switch (e) {
case 'fr':
return {
language: 'French (français)',
contact: 'Contact',
ColorWindowTitle: 'Configurer Color tchat',
ColorWindowPreviewTxt: '*Clickez sur la lettre à changer de couleur',
ColorWindowOkBtn: 'Appliquer',
ColorWindowToDefaultBtn: 'Par défaut',
ColorWindowThisTchatBtn: 'Pour se tchat',
ColorWindowDefaultText: 'Sélectionnez les tchat à Remettre par défaut:',
ColorWindowGras: 'En gras',
ColorWindowMaj: 'En majuscule',
ColorBtnTitle: '',
ColorLoadListName: [
'Sans couleur',
'Entrer des couleurs',
'rouge',
'marron',
'violet',
'bleu',
'vert',
'rose',
'magenta',
'dégradé violet',
'dégradé bleu foncé',
'dégradé vert',
'dégradé rouge',
'dégradé bleu clair',
'dégradé rose',
'dégradé vert clair',
'dégradé rose clair',
'dégradé rouge clair'
],
ColorLoadTitle: 'Clickez pour charger un autre code couleur<br>Le code couleur actuel est: ',
ColorSaveEmpty: '[vide]',
CustomReady: 'Code valide',
CustomNotReady: 'Code non valide',
update: 'Mise à jour',
updateAvailable: 'Une nouvelle version du script est disponible',
};
case 'es':
return {
language: 'Spanish (español)',
contact: 'Contacto',
ColorWindowTitle: 'Configurar Color tchat',
ColorWindowPreviewTxt: '*Haga clic en la carta de un cambio de color',
ColorWindowOkBtn: 'Aplicar',
ColorWindowToDefaultBtn: 'Color por defecto',
ColorWindowThisTchatBtn: 'Elegir este color',
ColorWindowDefaultText: 'Seleccione la tchat para restablecer a los valores predeterminados',
ColorWindowGras: 'en negrita',
ColorWindowMaj: 'capitalizado',
ColorBtnTitle: '',
ColorLoadListName: [
'No hay color',
'Introduzca un código de color',
'rojo',
'marrón',
'morado',
'azul',
'verde',
'rosa',
'magenta',
'gradiente violeta',
'degradado rosa',
'degradado azul marino',
'gradient',
'rojo degradado',
'luz azul degradado',
'gradiente de luz verde',
'rosa degradado',
'luz pendiente roja'
],
ColorLoadTitle: 'Haga clic para cargar otro código de colores<br>El código de color actual es: ',
ColorSaveEmpty: '[vacío]',
CustomReady: 'Código válido',
CustomNotReady: 'Código no válido',
update: 'Actualización',
updateAvailable: 'Una nueva versión del script está disponible',
};
case 'de':
return {
language: 'German (Deutsch)',
contact: 'Kontakt',
ColorWindowTitle: 'Color tchat Einstellung',
ColorWindowPreviewTxt: '*Klicke auf diese Buchstaben um die aktuell im oberen Feld gewählte Farbe reinzumischen',
ColorWindowOkBtn: 'Übernehmen',
ColorWindowToDefaultBtn: 'Zurücksetzen',
ColorWindowThisTchatBtn: 'Einstellung speichern',
ColorWindowDefaultText: 'Chaträume auf Standard setzen:',
ColorWindowGras: 'Fett',
ColorWindowMaj: 'CAPS LOCK',
ColorBtnTitle: '',
ColorLoadListName: [
'Keine Farbe',
'Eigener Farbcode',
'rot',
'braun',
'violett',
'blau',
'grün',
'pink',
'magenta',
'violett wechselnd',
'blau wechselnd',
'grün wechselnd',
'rot wechselnd',
'hellblau wechselnd',
'pink wechselnd',
'hellgrün wechselnd',
'pink wechselnd',
'hellrot wechselnd'
],
ColorLoadTitle: 'Klicke um weitere Farben auszuwählen<br>Aktueller Farbcode: ',
ColorSaveEmpty: '[leer]',
CustomReady: 'Code ok',
CustomNotReady: 'Ungültiger Code',
update: 'Update',
updateAvailable: 'Für das Script ist eine neue Version erhältlich',
};
case 'br':
case 'pt':
return {
language: 'Portuguese (português)',
contact: 'Contato',
ColorWindowTitle: 'Set Color tchat',
ColorWindowPreviewTxt: '*Clique na letra de uma mudança de cor',
ColorWindowOkBtn: 'Aplicar',
ColorWindowToDefaultBtn: 'Definido como padrão',
ColorWindowThisTchatBtn: 'Definido para este',
ColorWindowDefaultText: 'Selecione o tchat para repor as predefinições: ',
ColorWindowGras: 'Em negrito',
ColorWindowMaj: 'Capitalizados',
ColorBtnTitle: '',
ColorLoadListName: [
'Incolor',
'Insira um código de cor',
'vermelho',
'marrom',
'roxo',
'azul',
'verde',
'cor de rosa',
'magenta',
'gradiente violeta',
'gradiente azul escuro',
'gradiente verde',
'gradiente vermelho',
'gradiente de luz azul',
'Pink Gradient',
'gradiente luz verde',
'rosa Gradiente',
'gradiente claro vermelho'
],
ColorLoadTitle: 'Clique para carregar outro código de cor<br>O código de cores atual é: ',
ColorSaveEmpty: '[vazio]',
CustomReady: 'Código válido',
CustomNotReady: 'Código Inválido',
update: 'Atualização',
updateAvailable: 'Uma nova versão do script está disponível',
};
case 'pl':
return {
language: 'Polish (polski)',
contact: 'Kontakt',
ColorWindowTitle: 'Ustawienia Koloru Tchat',
ColorWindowPreviewTxt: 'kliknij na literę, aby zmienić kolor',
ColorWindowOkBtn: 'Zastosuj',
ColorWindowToDefaultBtn: 'Ustaw na domyślny',
ColorWindowThisTchatBtn: 'Ustaw na ten',
ColorWindowDefaultText: 'Wybierz tchat, który ma być domyślny: ',
ColorWindowGras: 'Grubość',
ColorWindowMaj: 'Wielkie litery',
ColorBtnTitle: '',
ColorLoadListName: [
'Bez koloru',
'Wprowadź kod koloru',
'Czerwony',
'Brązowy',
'Fioletowy',
'Niebieski',
'Zielony',
'Różowy',
'Purpurowy',
'Fioletowo gradientowy',
'Zwietrzały ciemny niebieski',
'Zielony gradient',
'Zwietrzały czerwony',
'Jasnoniebieski gradient',
'Zwietrzały ciemny różowy',
'Jasnozielony gradient',
'Zwietrzały różowy',
'Jasnoczerwony gradient'
],
ColorLoadTitle: 'Kliknij tutaj, aby załadować inny kod koloru<br>Twój obecny kod koloru jest: ',
ColorSaveEmpty: '[pusty]',
CustomReady: 'Prawidłowy Kod',
CustomNotReady: 'Zły Kod',
update: 'Aktualizacja',
updateAvailable: 'Nowa wersja skryptu jest dostępna',
};
default:
return {
language: 'None (English)',
contact: 'Contact',
ColorWindowTitle: 'Color tchat setting',
ColorWindowPreviewTxt: '*Click on the letters to change color',
ColorWindowOkBtn: 'Apply',
ColorWindowToDefaultBtn: 'Set to default',
ColorWindowThisTchatBtn: 'Set to this',
ColorWindowDefaultText: 'Select the tchat for reset to default: ',
ColorWindowGras: 'Bold',
ColorWindowMaj: 'Capitalized',
ColorBtnTitle: '',
ColorLoadListName: [
'No color',
'Enter a color code',
'red',
'brown',
'purple',
'blue',
'green',
'pink',
'magenta',
'violet gradient',
'degraded dark blue',
'green gradient',
'degraded red',
'blue gradient light',
'degraded pink',
'light green gradient',
'degraded pink',
'red gradient light'
],
ColorLoadTitle: 'Click to load another color code<br>The current color code is: ',
ColorSaveEmpty: '[empty]',
CustomReady: 'Valid Code',
CustomNotReady: 'Invalid Code',
update: 'Update',
updateAvailable: 'A new version of the script is available',
};
}
}(location.host.match(/(\D+)\d+\./) [1]);
TheWestApi.register('Color_tchat', colorTxt.name, colorTxt.minGame, colorTxt.maxGame, colorTxt.author, colorTxt.website).setGui('<br><i>Language detected: </i>' + colorTxt.Lang.language + '<br><br>This script adds new features to the chat:<br>Smileys, BB-Codes and Emojis! ??<br><br><i>' + colorTxt.name + ' v' + colorTxt.version +
'</i><br><br><br><b>' + colorTxt.Lang.contact + ':</b><ul style="margin-left:15px;"><li>Send a message to <a target=\'_blanck\' href="http://om.the-west.de/west/de/player/?ref=west_invite_linkrl&player_id=647936&world_id=13&hash=7dda">Tom Robert on German world Arizona</a></li>' +
'<li>Contact me on <a target=\'_blanck\' href="https://greasyfork.org/forum/messages/add/Tom Robert">Greasy Fork</a></li>' +
'<li>Message me on one of these The West Forum:<br>/ <a target=\'_blanck\' href="https://forum.the-west.de/private.php?do=newpm&u=24502">deutsches Forum</a> / ' +
'<a target=\'_blanck\' href="https://forum.the-west.net/private.php?do=newpm&u=37219">English forum</a> / <a target=\'_blanck\' href="https://forum.the-west.pl/private.php?do=newpm&u=32083">forum polski</a> / ' +
'<a target=\'_blanck\' href="https://forum.the-west.es/private.php?do=newpm&u=13770">foro español</a> /<br>/ <a target=\'_blanck\' href="https://forum.the-west.ru/private.php?do=newpm&u=27430">Русский форум</a> / ' +
'<a target=\'_blanck\' href="https://forum.the-west.fr/private.php?do=newpm&u=17783">forum français</a> / <a target=\'_blanck\' href="https://forum.the-west.it/private.php?do=newpm&u=14287">forum italiano</a> / ' +
'<a target=\'_blanck\' href="https://forum.beta.the-west.net/private.php?do=newpm&u=4072">beta forum</a> /<br>I will get an e-mail when you sent me the message <img src="../images/chat/emoticons/smile.png"></li></ul>');
colorTxt.DATA = new function () {
this.SavedColor = {
bdf: '900',
'save 1': '000',
'save 2': '000',
'save 3': '000',
'save 4': '000',
'save 5': '000'
};
this.Setting = {
'default': {
Format: '%c',
colorTag: '999'
},
bdf: {
Format: '/000* %C /000*',
colorTag: '900'
}
};
this.Load = function () {
try {
if (/colorTxt\./.test(localStorage.ColorTchat)) jQuery.extend(this, JSON.parse('{' + /(.+),/g.exec(localStorage.ColorTchat.replace(/colorTxt\.([a-zA-Z]+)=/g, '"$1":').replace(/(;)/g, ',')) [1] + '}'));
else $.extend(this, JSON.parse(localStorage.ColorTchat));
if (typeof this.colorTag !== 'undefined') {
this.Setting.default.Format = this.Format;
this.Setting.bdf.Format = this.bdfFormat;
this.Setting.default.colorTag = this.colorTag;
this.Setting.bdf.colorTag = this.SavedColor.bdf;
delete this.Format;
delete this.bdfFormat;
delete this.colorTag;
}
} catch (e) {
}
};
this.Load();
this.Save = function () {
localStorage.ColorTchat = JSON.stringify(function (e, t) {
for (var i in e) e[i] = t[i];
return e;
}({
Setting: {
},
SavedColor: {
}
}, this));
};
};
colorTxt.Tools = new function () {
this.colorTagInv = function (e) {
if (e == null || e == undefined) return '';
if (e.length == 3) return '';
var t = '';
for (var n = 1; n < e.length / 3 - 1; n++) {
t = e.substring(n * 3, n * 3 + 3) + t;
}
return t;
};
this.Degrader = function (e) {
if (e.length == 3) t = '#' + this.colorrgb(e);
else {
var t = 'linear-gradient(to right, ';
if (jQuery.browser.opera) t = '-o-linear-gradient(0deg, ';
for (var n = 0; n < e.length / 3; n++) {
t += '#' + this.colorrgb(e.substring(n * 3, n * 3 + 3));
if (n !== e.length / 3 - 1) t += ',';
}
t += ')';
}
return t;
};
this.colorrgb = function (e) {
result = '';
TransCode = {
0: '0',
1: '1',
2: '3',
3: '5',
4: '6',
5: '8',
6: 'a',
7: 'b',
8: 'd',
9: 'f'
};
for (var t = 0; t < e.length; t++) {
result += TransCode[e.substring(t, t + 1)];
}
return result;
};
try {
this.GuiSelectbox = tw2gui.selectbox;
this.Guicheckbox = tw2gui.checkbox;
this.Guitextfield = tw2gui.textfield;
this.Guibutton = tw2gui.button;
this.Guidialog = tw2gui.dialog;
} catch (e) {
this.GuiSelectbox = west.gui.Selectbox;
this.Guicheckbox = west.gui.Checkbox;
this.Guitextfield = west.gui.Textfield;
this.Guibutton = west.gui.Button;
this.Guidialog = west.gui.Dialog;
}
};
colorTxt.Chat = new function (e) {
this.init = function () {
if (!$('div.chat_room').length) return;
clearInterval(t.initInterval);
this.Draw();
t.initInterval = setInterval('colorTxt.Chat.OnChanelChange();', 500);
};
this.Draw = function () {
if (isDefined(this.btncolor)) return;
var e;
$('#colorTxtStyle').append('div.btnColor{cursor: pointer;position: absolute;right: 0px; width: 25px;height: 25px;}\n');
$('#colorTxtStyle').append('div.btnColorBG{background-image: url(data:image/png;base64,' + s + ');background-position: 0px 3px;background-repeat: no-repeat;}\n.btnColorBG:hover{background-position: -25px 3px;}\n');
$('#colorTxtStyle').append('div.btnColorImg{width: 11px; height: 11px; margin: 8px 0px 0px 5px; position: absolute; border-radius: 5px; background-image: url(data:image/png;base64,' + i + ');}\n');
$('#colorTxtStyle').append('div.btnColorImgBdf{background-position: -12px 0px; z-index: 6;}\n');
$('#colorTxtStyle').append('div.btnColorSmiley{border-top-right-radius: 10px;border-top-left-radius: 10px;border: 1px solid #646464;box-shadow: 0px 0px 1px 1px black;background-image: url(../images/interface/wood_texture_dark.jpg);width: 425px;bottom: 18px;left: -400px;height: 208px;\tmargin: 0px 0px 6px 0px; position: absolute;}\n');
$('#colorTxtStyle').append('div.btnColorOneSmiley{display: inline-block; cursor: pointer; width: 17px; height: 13px; padding: 1px; text-align: center; vertical-align: middle;}\n');
$('#colorTxtStyleTmp').append('div.btnColorImgTag{background-position: ' + o['000'] + '}\n');
this.btncolor = $('<div class="btnColor btnColorBG"/>').append($('<div class="btnColorImg btnColorImgTag"/>').click(function () {
colorTxt.Window.activetchat = this;
colorTxt.Window.show();
})).append(e = $('<div class="btnColorSmiley"/>').hide()).mouseout(function () {
$('div.btnColorSmiley:last-child', this).hide();
}).mouseover(function () {
$('div.btnColorSmiley:last-child', this).show();
});
for (var t in r) {
if (r[t] !== '') {
e.append($('<div class="btnColorOneSmiley"/>').data('Tag', t).click(this.addSmToTxt).append(r[t]));
}
}
};
this.addSmToTxt = function (e) {
var t = $(e.target).parentsUntil($('div.chat_main')).find('input');
var n = $(e.currentTarget).data('Tag');
var r = t[0].selectionStart;
var i = t[0].selectionEnd;
var s = t.val();
if (n == '[player][/player]') {
s = s.substring(0, r) + '[player]' + s.substring(r, i) + '[/player]' + s.substring(i);
} else if (n == '[town][/town]') {
s = s.substring(0, r) + '[town]' + s.substring(r, i) + '[/town]' + s.substring(i);
} else if (n == '[fort][/fort]') {
s = s.substring(0, r) + '[fort]' + s.substring(r, i) + '[/fort]' + s.substring(i);
} else if (n == '[alliance][/alliance]') {
s = s.substring(0, r) + '[alliance]' + s.substring(r, i) + '[/alliance]' + s.substring(i);
} else if (n == '[item=]') {
s = s.substring(0, r) + '[item=' + s.substring(r, i) + ']' + s.substring(i);
} else {
s = s.substring(0, r) + ' ' + n + s.substring(r);
}
t.val(s);
$(e.target).parentsUntil('.btnColor', '.btnColorSmiley').hide();
t.focus();
};
this.appliquer_couleur = function (e, t) {
if (e == '') return '';
if (t == '999') return e;
if (e.toLowerCase().indexOf('[player]') == 0 && e.toLowerCase().indexOf('[/player]') !== - 1) return e.substring(0, e.toLowerCase().indexOf('[/player]') + 10) + ' ' + this.appliquer_couleur(e.substring(e.toLowerCase().indexOf('[/player]') + 10), t);
if (e.toLowerCase().indexOf('[report=') == 0 && e.toLowerCase().indexOf('[/report]') !== - 1) return e.substring(0, e.toLowerCase().indexOf('[/report]') + 10) + ' ' + this.appliquer_couleur(e.substring(e.toLowerCase().indexOf('[/report]') + 10), t);
if (e.toLowerCase().indexOf('http') == 0) if (e.indexOf(' ') !== - 1) return e.substring(0, e.indexOf(' ') + 1) + ' ' + this.appliquer_couleur(e.substring(e.indexOf(' ') + 1), t);
else return e;
if (e.toLowerCase().indexOf('[item=') == 0 && e.indexOf(']') !== - 1) return e.substring(0, e.indexOf(']') + 1) + ' ' + this.appliquer_couleur(e.substring(e.indexOf(']') + 1), t);
if (e.toLowerCase().indexOf('[marker') == 0 && e.indexOf(']') !== - 1) return e.substring(0, e.indexOf(']') + 1) + ' ' + this.appliquer_couleur(e.substring(e.indexOf(']') + 1), t);
for (var n in r) {
if (e.indexOf(n) == 0) return e.substring(0, n.length) + ' ' + this.appliquer_couleur(e.substring(n.length), t)
}
if (t.length == 3) return '/' + t + e;
if (e.charAt(0) == ' ') return e.charAt(0) + this.appliquer_couleur(e.substring(1), t.substring(3) + t.substring(0, 3));
return '/' + t.substring(0, 3) + e.charAt(0) + ' ' + this.appliquer_couleur(e.substring(1), t.substring(3) + t.substring(0, 3));
};
this.flipString = function (e) {
if (e.length == 0) return '';
if (typeof n[e[0]] !== 'undefined') {
return this.flipString(e.substring(1)) + n[e[0]];
} else {
return this.flipString(e.substring(1)) + e[0];
}
};
this.OnPressKeyEnter = function (e) {
var t = {
};
$.extend(t, $(e.target).data('ColorTchat'));
var n = $(e.target).val();
if (n.charAt(0) == '/') {
if (n.substring(0, 6) == '/tell ') {
if (n.indexOf(':') !== - 1) {
var r = n.substring(6, n.indexOf(':') + 1);
n = n.substring(n.indexOf(':') + 1);
}
} else {
var i = [
'/topic',
'/clear',
'/logout',
'/ignorelist',
'/ignore',
'/unignore',
'/rights',
'/color',
'/me',
'/help',
'/?',
'/join'
];
for (var s = 0; s < i.length; s++) {
if (n.substring(0, i[s].length) == i[s]) {
return;
}
}
}
}
if (/\/flip /.test(n.substring(0, 6))) {
t.Format = '%fc';
n = n.substring(6).toLowerCase();
}
if (/\/[0-9]{3}/.test(n.substring(0, 5))) {
t.Format = '%n';
}
if (typeof r !== 'undefined') t.Format = '/tell %t:' + t.Format;
var o = this.appliquer_couleur(n, function (e) {
var t = '';
if (e == null || e == undefined || e.length % 3 !== 0) return '999';
if (e.length !== 3) {
for (var n = 1; n < e.length / 3 - 1; n++) t = e.substring(n * 3, n * 3 + 3) + t;
return e + t;
} else return e;
}(t.colorTag));
var u = this.flipString(n);
var a = this.appliquer_couleur(u, function (e) {
var t = '';
if (e == null || e == undefined || e.length % 3 !== 0) return '999';
if (e.length !== 3) {
for (var n = 1; n < e.length / 3 - 1; n++) t = e.substring(n * 3, n * 3 + 3) + t;
return e + t;
} else return e;
}(t.colorTag));
var f = this.flipString(n.toUpperCase());
var l = this.appliquer_couleur(f, function (e) {
var t = '';
if (e == null || e == undefined || e.length % 3 !== 0) return '999';
if (e.length !== 3) {
for (var n = 1; n < e.length / 3 - 1; n++) t = e.substring(n * 3, n * 3 + 3) + t;
return e + t;
} else return e;
}(t.colorTag));
$(e.target).val(t.Format.replace('%c', o).replace('%C', o.toUpperCase()).replace('%fc', a).replace('%f', u).replace('%F', f).replace('%t', r).replace('%n', n));
};
this.OnChanelChange = function () {
if (!$('div.chat_room').length) return;
clearInterval(t.initInterval);
$('div.chat_room').find('.chat_input').each(function (e) {
if (!$(this).children().is('.btnColor')) {
$(this).append(colorTxt.Chat.btncolor.clone(true));
$(this).find('input.message').keypress(function (e) {
if (e.keyCode == 13) {
colorTxt.Chat.OnPressKeyEnter(e);
document.focusing = undefined;
}
}).data('ColorTchat', colorTxt.DATA.Setting.default); if (/fortbattle/.test($(this).parents().map(function () {
if ($(this).hasClass('chat_room')) return this;
}).attr('class'))) {
$(this).find('.btnColorImg').addClass('btnColorImgBdf').removeClass('btnColorImgTag');
$(this).find('input.message').data('ColorTchat', colorTxt.DATA.Setting.bdf);
}
colorTxt.Chat.Change = true;
}
}); this.ChangeColor(); t.initInterval = setInterval('colorTxt.Chat.OnChanelChange();', 500);
};
this.ChangeColor = function () {
if (this.Change !== true) return;
this.Change = false;
var e = t.DATA.Setting.default.colorTag;
if (typeof o[e] !== 'undefined') $('#colorTxtStyleTmp').text('div.btnColorImgTag{background-position: ' + o[e] + '; z-index: 6}\n');
else $('#colorTxtStyleTmp').text('div.btnColorImgTag{background: ' + t.Tools.Degrader(e) + '}\n');
$('div.chat_room').each(function (e) {
try {
var t = /room_(.*)/.exec($(this).attr('class')) [1];
if (typeof colorTxt.DATA.Setting[t] !== 'undefined') {
var n = colorTxt.DATA.Setting[t].colorTag;
$(this).find('.btnColorImgTag').addClass(t);
$(this).find('input.message').data('ColorTchat', colorTxt.DATA.Setting[t]);
if (typeof o[n] !== 'undefined') $('#colorTxtStyleTmp').append('div.' + t + '{background-position: ' + o[n] + '; z-index: 6}\n');
else $('#colorTxtStyleTmp').append('div.' + t + '{background: ' + colorTxt.Tools.Degrader(n) + '}\n');
} else {
$(this).find('input.message').data('ColorTchat', colorTxt.DATA.Setting.default);
}
} catch (r) {
}
});
};
{
var t = e;
this.Smiley = 'undefined';
this.ActiveInput = 'undefined';
var n = {
a: 'ɐ',
b: 'q',
c: 'ɔ',
C: 'Ɔ',
d: 'p',
e: 'ǝ',
E: 'Ǝ',
f: 'ɟ',
g: 'ƃ',
G: 'ץ',
h: 'ɥ',
i: 'ı',
j: 'ɾ',
J: 'ſ',
k: 'ʞ',
m: 'ɯ',
n: 'u',
p: 'd',
q: 'b',
Q: 'Ὁ',
r: 'ɹ',
R: 'ᴚ',
t: 'ʇ',
T: '┴',
u: 'n',
U: '∩',
v: 'ʌ',
V: 'Ʌ',
w: 'ʍ',
W: 'M',
y: 'ʎ',
3: 'ɛ',
4: 'h',
6: '9',
7: '˪',
9: '6',
'.': '˙',
'[': ']',
']': '[',
'(': ')',
')': '(',
'{': '}',
'}': '{',
'?': '¿',
'!': '¡',
'\'': ',',
'<': '>',
'>': '<',
_: '‾',
';': '؛',
'‿': '⁀',
'⁅': '⁆',
'∴': '∵',
'\r': '\n'
};
r = {
':)': '<img src ="../images/chat/emoticons/smile.png?1">',
':D': '<img src ="../images/chat/emoticons/grin.png?1">',
':(': '<img src ="../images/chat/emoticons/frown.png?1">',
';)': '<img src ="../images/chat/emoticons/smirk.png?1">',
':p': '<img src ="../images/chat/emoticons/tongue.png?1">',
'-.-': '<img src ="../images/chat/emoticons/nc.png?1">',
'^^': '<img src ="../images/chat/emoticons/happy.png?1">',
'o_O': '<img src ="../images/chat/emoticons/oo.png?1">',
':/': '<img src="../images/chat/emoticons/sore.png?1">',
'=:)': '<img src="../images/chat/emoticons/invader.png?1">',
'>:(': '<img src="../images/chat/emoticons/angry.png?1">',
':\'(': '<img src="../images/chat/emoticons/cry.png?1">',
':o': '<img src="../images/chat/emoticons/ohmy.png?1">',
':x': '<img src="../images/chat/emoticons/muted.png?1">',
':|': '<img src="../images/chat/emoticons/silent.png?1">',
'>.<': '<img src="../images/chat/emoticons/palm.png?1">',
'x.x': '<img src="../images/chat/emoticons/xx.png?1">',
'el pollo diablo!': '<img src ="../images/chat/emoticons/elpollodiablo.png?1">',
'!el pollo diablo': '<img src ="../images/chat/emoticons/elpollodiablo_mirror.png?1">',
'el pollo diablo?!': '<img src ="../images/chat/emoticons/elpollodiablo_front.png?1">',
'addme': '<img src="../images/chat/emoticons/sheep.gif">',
'addme!': '<img src="../images/chat/emoticons/sheep_rainbow.gif">',
'[player][/player]': '<div style="background-image: url(../images/tw2gui/tw2gui_bbcodes.png); background-position:-88px 20px; width: 21px; height: 20px">',
'[town][/town]': '<div style="background-image: url(../images/tw2gui/tw2gui_bbcodes.png); background-position:-110px 20px; width: 21px; height: 20px">',
'[fort][/fort]': '<div style="background-image: url(../images/tw2gui/tw2gui_bbcodes.png); background-position:-132px 20px; width: 21px; height: 20px">',
'[alliance][/alliance]': '<div style="background-image: url(../images/tw2gui/tw2gui_bbcodes.png); background-position:-154px 20px; width: 21px; height: 20px">',
'[item=]': '<img src="../images/forum/icon/cowboy_boots.png" style="background: url(../images/tw2gui/tw2gui_bbcodes.png); background-position:-22px 20px; width: 21px; height: 20px">',
'/189 Check this out!: https://greasyfork.org/users/7962 ': '<img src="../images/forum/icon/southern_flag.png" style="background: url(../images/tw2gui/tw2gui_bbcodes.png); background-position:-22px 20px; width: 19px; height: 20px">',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'✌️': '✌️',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'❤️': '❤️',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'☀️': '☀️',
'⛅️': '⛅️',
'☁️': '☁️',
'⚡️': '⚡️',
'☔️': '☔️',
'❄️': '❄️',
'⛄️': '⛄️',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'⏰': '⏰',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'✂️': '✂️',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'⚽️': '⚽️',
'⚾️': '⚾️',
'?': '?',
'?': '?',
'⛳️': '⛳️',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'☕️': '☕️',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
'?': '?',
};
var EvName = Object.keys(Game.sesData) [0];
if (EvName == 'Hearts')
r['hearts!'] = '<div style="background-image: url(../images/window/events/valentine/valentine_sprite.png); background-position:-368px -43px; width: 18px; height: 18px">';
if (EvName == 'Easter')
r['easter!'] = '<div style="background-image: url(../images/window/events/easter/easter_sprite.png); background-position:-20px 0px; width: 17px; height: 20px">';
/*if (EvName == 'Independence')
r['??!'] = '<div style="background-image: url(../.png); background-position:-20px 0px; width: 18px; height: 18px">';
if (EvName == 'DayOfDead')
r['??!'] = '<div style="background-image: url(../images/window/events/dotd/dotd_sprite.png); background-position:-201px 0px; width: 18px; height: 18px">';
if (EvName == 'Octoberfest')
r['octoberfest!'] = '<div style="background-image: url(../.png); background-position:-20px 0px; width: 18px; height: 18px">';*/
var i = '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';
var s = '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';
var o = {
999: '0px 0px',
bdf: '-12px 0px',
308318328338348: '-24px -0px',
106117128139: '-36px -0px',
120130140150: '-48px -0px',
400500600700800: '-60px -0px',
'199299399499599699': '-72px -0px',
505606607709809: '-84px -0px'
};
}
}(colorTxt);
colorTxt.Window = new function (e) {
var t = e;
this.ColorTag = '000';
this.SaveName = 'save 1';
this.Format = t.DATA.Format;
this.BdfFormat = t.DATA.bdfFormat;
var n = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAIAAAAv2XlzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAH6SURBVHjaVM89a1RRFIXhtffZ9zOYTBKJYaKOiumiqdKKgmBhqUL+hI2VIFjYCZaChb9ABAtJIQbFIoJoQNSMEKLkC+IEZhLnzuTM3DP3nm2hhLjq9RYPRceOn5qeDUWcyw0jjUNjDBsTiEnikADbd13rbF7sbKwetLZkdPLs5Ru34cvv9ZXauNy6OlOrnZ6aOmmC+FN9KxQzd+HMs8Wv71caG6ufl54/EvW+28nyfr/V2hvh4KCb9W2XfP5rN3vwZCGJ5en9+Z7tZu3faZKaIBIiEKlhiqMgikMjwswKAJAgEBEAhskwoCVUBQBUiSGBRGEYCweGhPnE2PD8tdk4DCrDQ1nH2l6/KEsQBABB1StIfu5kr5c3zzcHE9udykhl5txEIPxicfnd8mpeStFzBAgBWcfud2xBYUH8diV7862tWldVKBQgIE3jsdGKVw9AitLvtTvMdGVuulYdJyLVvwQAIBAzrW3ufllrDJxT9VKW5X67e/3SxYd3bjKKvu2B6DCAahSFecn3Hi+8fLWuqjIoCmt7IsxMe812s9li5sO/934oTSar1TQJDqxVVfFenXO+LAGEYZikydFAVeM4BtHADVzuVFWIWFkUVBYuTZMwjvD/xLBqCZCyAZHkWUMa9Q9L7m573Xs9Kv7nJmLmj/XtQeuHd70/AwDj7v01yw6ZhAAAAABJRU5ErkJggg==';
var r = [
'999',
'custom',
'700',
'321',
'409',
'007',
'031',
'704',
'608',
'308318328338348',
'106117128139',
'120130140150',
'400500600700800',
'199299399499599699',
'505606607709809',
'696595494393292',
'959949839829819',
'900911922933944'
];
this.show = function () {
var e;
var i;
$((this.w = wman.open('Colorsettings').setTitle(t.Lang.ColorWindowTitle).setMiniTitle(colorTxt.name).setSize(350, 380)).getContentPane()).css('text-align', 'center').append(i = jQuery('<input type=hidden class="color" id="colorinput" value="66ff00"/>'));
(this.ColorPicker = new jscolor.color(i[0], {
pickerOnfocus: false
})).showPicker();
this.tab1 = jQuery('<div style="display: inline-block; width: 290px; height: 240px; position: relative; padding: 4px 12px 4px 4px; text-align: left"/>').appendTo(this.w.getContentPane()).append(jQuery(jscolor.picker.boxB).css({
position: 'relative',
display: 'inline-block',
'background-color': ''
})).append(jQuery('<div id="colorPanelDIV" style="display: inline-block; width: auto; height: 123px; position: absolute; margin-left: 7px; border: ' + this.ColorPicker.pickerBorder + 'px solid; border-color: ' + this.ColorPicker.pickerBorderColor + '"/>').append(jQuery('<div id = "colorWLoadbtn" style="width: 20px; height: 20px; margin: 10px; cursor: pointer;"/>').click(function (e) {
colorTxt.Window.selectLoad.show(e);
colorTxt.Window.selectSave.hide();
})).append($('<div id="colorWSavebtnBg" style="width: 20px; height: 20px; background-image: url(data:image/png;base64,' + n + '); background-size: 100% 100%; margin: 10px; cursor: pointer;"/>').click(function (e) {
colorTxt.Window.selectSave.show(e);
colorTxt.Window.selectLoad.hide();
}))).append(e = jQuery('<div id="PreviewDIV" class="chatwindow_background" style="display: inline-block; width: 287px; height: 47px; position: relative; zIndex: 5; margin-top: 5px; border: ' + this.ColorPicker.pickerInset + 'px solid; border-color: ' + this.ColorPicker.pickerInsetColor + '; color: white; background: #1D1C1C; opacity:' + jQuery('.tw2gui_window_inset', '.chat').css('opacity') + '"/>')).append(jQuery('<div style="display: inline-block; position: relative; padding: 4px; width: 50%"/>').append((this.Gras = (new t.Tools.Guicheckbox(t.Lang.ColorWindowGras)).setSelected(/\*.*\*/.test(this.Format)).setId('colorwindowgras')).getMainDiv().click(function () {
colorTxt.Window.updateFormat();
}).click(function () {
colorTxt.Window.updatePreview();
}))).append(jQuery('<div style="display: inline-block; position: relative; padding: 4px; width: auto"/>').append((this.Maj = (new t.Tools.Guicheckbox(t.Lang.ColorWindowMaj)).setSelected(/%C/.test(this.Format)).setId('colorwindowMaj')).getMainDiv().click(function () {
colorTxt.Window.updateFormat();
}).click(function () {
colorTxt.Window.updatePreview();
}))).append((this.inputFormat = (new t.Tools.Guitextfield).setSize(15).setId('bdfFormat')).getMainDiv());
$((this.selectLoad = (new t.Tools.GuiSelectbox('topleft-left')).setPosition(42, 10).addListener(function (e) {
colorTxt.Window.LoadColor(e);
setTimeout(function () {
colorTxt.Window.selectLoad.hide();
}, 0);
}).setWidth(200).setHeight(300)).elContent).css({
'overflow-y': 'auto'
});
this.selectSave = (new t.Tools.GuiSelectbox('topleft-left')).setPosition(42).addListener(function (e) {
colorTxt.Window.SaveColor(e);
setTimeout(function () {
colorTxt.Window.selectSave.hide();
}, 0);
}).setWidth(200);
for (var s = 0; s < r.length; s++) this.selectLoad.addItem(r[s], jQuery('<div style=\'display: inline-block; width: 16px; height: 13px;\'/>').css('background', t.Tools.Degrader(r[s])).after(' ' + t.Lang.ColorLoadListName[s]));
for (s in t.DATA.SavedColor) this.selectLoad.addItem(s, jQuery('<div style=\'display: inline-block; width: 16px; height: 13px;\'/>').css('background', t.Tools.Degrader(t.DATA.SavedColor[s])).after(' ' + s + (t.DATA.SavedColor[s] == '000' ? ' ' + t.Lang.ColorSaveEmpty : '')));
for (s in t.DATA.SavedColor) this.selectSave.addItem(s, jQuery('<div style=\'display: inline-block; width: 16px; height: 13px;\'/>').css('background', t.Tools.Degrader(t.DATA.SavedColor[s])).after(' ' + s + (t.DATA.SavedColor[s] == '000' ? ' ' + t.Lang.ColorSaveEmpty : '')));
for (var s = 0; s < t.Lang.ColorWindowPreviewTxt.length; s++) jQuery('<div id="idColorPreview_' + s + '"style="display: inline-block; cursor: pointer" onclick="javascript: colorTxt.Window.SetPreviewColor(\'' + s + '\');"/>').appendTo(e);
this.customTF = (new t.Tools.Guitextfield).setSize(30);
this.test = function () {
colorTxt.Window.customTest.html(colorTxt.Lang.CustomNotReady).css('color', 'red');
v = colorTxt.Window.customTF.getValue();
if (v.length % 3 == 0 && /[0-9]+/.exec(v) == v) {
colorTxt.Window.customTest.html(colorTxt.Lang.CustomReady).css('color', 'green');
}
};
this.customTF.getField() [0].addEventListener('keyup', this.test);
this.customTest = jQuery('<div style="height: 12px;width: 120px; display: inline-block"/>');
this.customTF.divMain.append(this.customTest);
this.DefaultButton = (new t.Tools.Guibutton(t.Lang.ColorWindowToDefaultBtn, function () {
colorTxt.Window.DefaultClick();
})).appendTo(this.w.getContentPane());
this.OkButton = (new t.Tools.Guibutton(t.Lang.ColorWindowThisTchatBtn, function () {
colorTxt.Window.OkClick();
})).appendTo(this.w.getContentPane());
var o = $(this.activetchat).parents('.chat_room').find('input.message').data('ColorTchat');
this.LoadColor(o.colorTag);
document.getElementById('idColorPreview_0').innerHTML = '<b>' + t.Lang.ColorWindowPreviewTxt.charAt(0) + '</b>';
document.getElementById('bdfFormat').value = this.Format;
};
this.OkClick = function () {
var e = /room_(.*)/.exec($(this.activetchat).parents('.chat_room').attr('class')) [1];
if (typeof t.DATA.Setting[e] == 'undefined') $(this.activetchat).parents('.chat_room').find('input.message').data('ColorTchat', t.DATA.Setting[e]);
t.DATA.Setting[e] = {
Format: jQuery('#bdfFormat').attr('value'),
colorTag: this.ColorTag
};
t.DATA.Save();
t.Chat.Change = true;
t.Chat.ChangeColor();
};
this.DefaultClick = function () {
t.DATA.Setting.default = {
Format: $('#bdfFormat').attr('value'),
colorTag: this.ColorTag
};
if (Object.keys(colorTxt.DATA.Setting).length > 2) {
var e,
n,
r,
i = $('<ul/>').addClass('colorTchat_default_check');
for (n in colorTxt.DATA.Setting) {
if (n == 'bdf' || n == 'default') continue;
i.append($('<li/>').css({
'list-style-type': 'none',
margin: '5px 0'
}).append((new t.Tools.Guicheckbox(n)).setId(n).getMainDiv()));
e = /_([0-9]*)/.exec(n) [1];
switch (/(.*)_/.exec(n) [1]) {
case 'alliance':
Ajax.remoteCallMode('alliance', 'get_data', {
alliance_id: e
}, function (e) {
if (e.error) {
(new UserMessage(e.error, UserMessage.TYPE_ERROR)).show();
return;
}
$('#alliance_' + e.data.allianceId).text(e.data.allianceName);
});
break;
case 'town':
break;
case 'general':
}
}(new t.Tools.Guidialog(t.Lang.ColorWindowDefaultText, i, 'question')).addButton(t.Lang.ColorWindowOkBtn, function () {
$('.colorTchat_default_check').find('.tw2gui_checkbox_checked').each(function () {
delete colorTxt.DATA.Setting[$(this).attr('id')];
$('.' + $(this).attr('id')).removeClass($(this).attr('id'));
});
colorTxt.DATA.Save();
colorTxt.Chat.ChangeColor();
}).show();
}
t.Chat.Change = true;
};
this.SetPreviewColor = function (e) {
if (e == 0) {
this.ColorTag = this.colorwest(this.ColorPicker.toString());
} else {
e--;
if (e > this.ColorTag.length / 3) {
this.ColorTag += this.colorwest(this.ColorPicker.toString());
} else {
this.ColorTag = this.ColorTag.substring(0, e * 3) + this.colorwest(this.ColorPicker.toString()) + this.ColorTag.substring(e * 3 + 3);
}
}
this.updatePreview();
};
this.updateFormat = function () {
var e = '%c';
if (this.SaveName !== 'bdf') {
if (this.Maj.isSelected()) e = '%C';
if (this.Gras.isSelected()) e = ' /999* ' + e + ' /999*';
this.Format = e;
jQuery('#bdfFormat').attr('readonly', 'readonly');
jQuery('#bdfFormat').val(this.Format);
} else {
jQuery('#bdfFormat').removeAttr('readonly');
jQuery('#bdfFormat').val(this.BdfFormat);
}
};
this.updatePreview = function () {
var e = '%c';
if (this.Gras.isSelected()) e = e.bold();
if (this.Maj.isSelected()) e = e.toUpperCase();
var n = this.ColorTag + t.Tools.colorTagInv(this.ColorTag);
for (var r = 1; r < t.Lang.ColorWindowPreviewTxt.length; r++) {
var i = document.getElementById('idColorPreview_' + r);
i.style.color = '#' + t.Tools.colorrgb(n.substring(0, 3));
var s = t.Lang.ColorWindowPreviewTxt.charAt(r);
if (s == ' ') i.innerHTML = ' ';
else i.innerHTML = e.replace('%C', s.toUpperCase()).replace('%c', s);
n = n.substring(3) + n.substring(0, 3);
}
$('#colorWLoadbtn').css('background', t.Tools.Degrader(this.ColorTag));
$('#colorWLoadbtn').attr('title', t.Lang.ColorLoadTitle + this.ColorTag);
};
this.SaveColor = function (e) {
t.DATA.SavedColor[e] = this.ColorTag;
if (e == 'bdf') {
switch ((/%c/.test(document.getElementById('bdfFormat').value) ? '1' : '0') + (/%C/.test(document.getElementById('bdfFormat').value) ? '1' : '0') + (/%n/.test(document.getElementById('bdfFormat').value) ? '1' : '0')) {
case '100':
case '010':
case '001':
this.bdfFormat = document.getElementById('bdfFormat').value;
break;
default:
document.getElementById('bdfFormat').value = this.bdfFormat;
}
}
for (var i in this.selectLoad.items) {
if (this.selectLoad.items[i].value == e) this.selectLoad.items[i].node.css('background', t.Tools.Degrader(t.DATA.SavedColor[e]));
if (typeof this.selectSave.items[i] !== 'undefined') if (this.selectSave.items[i].value == e) {
this.selectSave.items[i].node.css('background', t.Tools.Degrader(t.DATA.SavedColor[e]));
}
}
this.updateFormat();
t.DATA.Save();
};
this.LoadColor = function (e) {
this.SaveName = e;
if (/save/.test(e) || e == 'bdf') {
e = t.DATA.SavedColor[e];
}
if (e == 'custom') {
this.customTF.setValue(this.ColorTag);
this.test();
(new t.Tools.Guidialog(t.Lang.ColorLoadListName[1], this.customTF.getMainDiv(), 'question')).addButton(t.Lang.ColorWindowOkBtn, function () {
var e = colorTxt.Window.customTF.getValue();
if (e.length % 3 == 0 && /[0-9]+/.exec(e) == e) colorTxt.Window.LoadColor(e);
}).addButton('cancel').show();
return;
}
this.ColorPicker.fromString('#' + t.Tools.colorrgb(e.substring(0, 3)));
this.ColorTag = e;
this.updateFormat();
this.updatePreview();
};
this.colorwest = function (e) {
Wr = (parseInt(e.substring(0, 2), 16) / 255 * 9).toFixed();
Wg = (parseInt(e.substring(2, 4), 16) / 255 * 9).toFixed();
Wb = (parseInt(e.substring(4), 16) / 255 * 9).toFixed();
return Wr + Wg + Wb;
};
}(colorTxt);
console.log(colorTxt);
$('head').append($('<style id=\'colorTxtStyle\' />'));
$('head').append($('<style id=\'colorTxtStyleTmp\' />'));
$('#colorTxtStyle').append('div.tw2gui_window.chat div.chat_room div.chat_input div.cbg {right: 65px}\n');
$('#colorTxtStyle').append('div.tw2gui_window.chat div.chat_room div.chat_input a.speak {right: 25px}\n');
colorTxt.initInterval = setInterval('colorTxt.Chat.init();', 200);
var jscolor = {
dir: 'http://tomrobert.safe-ws.de/', // location of jscolor directory (leave empty to autodetect)
bindClass: 'color', // class name
binding: true, // automatic binding via <input class="...">
preloading: true, // use image preloading?
install: function () {
jscolor.addEvent(window, 'load', jscolor.init);
},
init: function () {
if (jscolor.binding) {
jscolor.bind();
}
if (jscolor.preloading) {
jscolor.preload();
}
},
getDir: function () {
if (!jscolor.dir) {
var detected = jscolor.detectDir();
jscolor.dir = detected !== false ? detected : 'jscolor/';
}
return jscolor.dir;
},
detectDir: function () {
var base = location.href;
var e = document.getElementsByTagName('base');
for (var i = 0; i < e.length; i += 1) {
if (e[i].href) {
base = e[i].href;
}
}
var e = document.getElementsByTagName('script');
for (var i = 0; i < e.length; i += 1) {
if (e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
var src = new jscolor.URI(e[i].src);
var srcAbs = src.toAbsolute(base);
srcAbs.path = srcAbs.path.replace(/[^\/]+$/, ''); // remove filename
srcAbs.query = null;
srcAbs.fragment = null;
return srcAbs.toString();
}
}
return false;
},
bind: function () {
var matchClass = new RegExp('(^|\\s)(' + jscolor.bindClass + ')(\\s*(\\{[^}]*\\})|\\s|$)', 'i');
var e = document.getElementsByTagName('input');
for (var i = 0; i < e.length; i += 1) {
if (jscolor.isColorAttrSupported && e[i].type.toLowerCase() == 'color') {
// skip inputs of type 'color' if the browser supports this feature
continue;
}
var m;
if (!e[i].color && e[i].className && (m = e[i].className.match(matchClass))) {
var prop = {
};
if (m[4]) {
try {
prop = (new Function('return (' + m[4] + ')')) ();
} catch (eInvalidProp) {
}
}
e[i].color = new jscolor.color(e[i], prop);
}
}
},
preload: function () {
for (var fn in jscolor.imgRequire) {
if (jscolor.imgRequire.hasOwnProperty(fn)) {
jscolor.loadImage(fn);
}
}
},
images: {
pad: [
181,
101
],
sld: [
16,
101
],
cross: [
15,
15
],
arrow: [
7,
11
]
},
imgRequire: {
},
imgLoaded: {
},
requireImage: function (filename) {
jscolor.imgRequire[filename] = true;
},
loadImage: function (filename) {
if (!jscolor.imgLoaded[filename]) {
jscolor.imgLoaded[filename] = new Image();
jscolor.imgLoaded[filename].src = jscolor.getDir() + filename;
}
},
fetchElement: function (mixed) {
return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
},
addEvent: function (el, evnt, func) {
if (el.addEventListener) {
el.addEventListener(evnt, func, false);
} else if (el.attachEvent) {
el.attachEvent('on' + evnt, func);
}
},
fireEvent: function (el, evnt) {
if (!el) {
return;
}
if (document.createEvent) {
var ev = document.createEvent('HTMLEvents');
ev.initEvent(evnt, true, true);
el.dispatchEvent(ev);
} else if (document.createEventObject) {
var ev = document.createEventObject();
el.fireEvent('on' + evnt, ev);
} else if (el['on' + evnt]) { // alternatively use the traditional event model (IE5)
el['on' + evnt]();
}
},
getElementPos: function (e) {
var e1 = e,
e2 = e;
var x = 0,
y = 0;
if (e1.offsetParent) {
do {
x += e1.offsetLeft;
y += e1.offsetTop;
} while (e1 = e1.offsetParent);
}
while ((e2 = e2.parentNode) && e2.nodeName.toUpperCase() !== 'BODY') {
x -= e2.scrollLeft;
y -= e2.scrollTop;
}
return [x,
y];
},
getElementSize: function (e) {
return [e.offsetWidth,
e.offsetHeight];
},
getRelMousePos: function (e) {
var x = 0,
y = 0;
if (!e) {
e = window.event;
}
if (typeof e.offsetX === 'number') {
x = e.offsetX;
y = e.offsetY;
} else if (typeof e.layerX === 'number') {
x = e.layerX;
y = e.layerY;
}
return {
x: x,
y: y
};
},
getViewPos: function () {
if (typeof window.pageYOffset === 'number') {
return [window.pageXOffset,
window.pageYOffset];
} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
return [document.body.scrollLeft,
document.body.scrollTop];
} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
return [document.documentElement.scrollLeft,
document.documentElement.scrollTop];
} else {
return [0,
0];
}
},
getViewSize: function () {
if (typeof window.innerWidth === 'number') {
return [window.innerWidth,
window.innerHeight];
} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
return [document.body.clientWidth,
document.body.clientHeight];
} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
return [document.documentElement.clientWidth,
document.documentElement.clientHeight];
} else {
return [0,
0];
}
},
URI: function (uri) { // See RFC3986
this.scheme = null;
this.authority = null;
this.path = '';
this.query = null;
this.fragment = null;
this.parse = function (uri) {
var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);
this.scheme = m[3] ? m[2] : null;
this.authority = m[5] ? m[6] : null;
this.path = m[7];
this.query = m[9] ? m[10] : null;
this.fragment = m[12] ? m[13] : null;
return this;
};
this.toString = function () {
var result = '';
if (this.scheme !== null) {
result = result + this.scheme + ':';
}
if (this.authority !== null) {
result = result + '//' + this.authority;
}
if (this.path !== null) {
result = result + this.path;
}
if (this.query !== null) {
result = result + '?' + this.query;
}
if (this.fragment !== null) {
result = result + '#' + this.fragment;
}
return result;
};
this.toAbsolute = function (base) {
var base = new jscolor.URI(base);
var r = this;
var t = new jscolor.URI;
if (base.scheme === null) {
return false;
}
if (r.scheme !== null && r.scheme.toLowerCase() === base.scheme.toLowerCase()) {
r.scheme = null;
}
if (r.scheme !== null) {
t.scheme = r.scheme;
t.authority = r.authority;
t.path = removeDotSegments(r.path);
t.query = r.query;
} else {
if (r.authority !== null) {
t.authority = r.authority;
t.path = removeDotSegments(r.path);
t.query = r.query;
} else {
if (r.path === '') {
t.path = base.path;
if (r.query !== null) {
t.query = r.query;
} else {
t.query = base.query;
}
} else {
if (r.path.substr(0, 1) === '/') {
t.path = removeDotSegments(r.path);
} else {
if (base.authority !== null && base.path === '') {
t.path = '/' + r.path;
} else {
t.path = base.path.replace(/[^\/]+$/, '') + r.path;
}
t.path = removeDotSegments(t.path);
}
t.query = r.query;
}
t.authority = base.authority;
}
t.scheme = base.scheme;
}
t.fragment = r.fragment;
return t;
};
function removeDotSegments(path) {
var out = '';
while (path) {
if (path.substr(0, 3) === '../' || path.substr(0, 2) === './') {
path = path.replace(/^\.+/, '').substr(1);
} else if (path.substr(0, 3) === '/./' || path === '/.') {
path = '/' + path.substr(3);
} else if (path.substr(0, 4) === '/../' || path === '/..') {
path = '/' + path.substr(4);
out = out.replace(/\/?[^\/]*$/, '');
} else if (path === '.' || path === '..') {
path = '';
} else {
var rm = path.match(/^\/?[^\/]*/) [0];
path = path.substr(rm.length);
out = out + rm;
}
}
return out;
}
if (uri) {
this.parse(uri);
}
},
//
// Usage example:
// var myColor = new jscolor.color(myInputElement)
//
color: function (target, prop) {
this.required = true; // refuse empty values?
this.adjust = true; // adjust value to uniform notation?
this.hash = false; // prefix color with # symbol?
this.caps = true; // uppercase?
this.slider = true; // show the value/saturation slider?
this.valueElement = target; // value holder
this.styleElement = target; // where to reflect current color
this.onImmediateChange = null; // onchange callback (can be either string or function)
this.hsv = [
0,
0,
1
]; // read-only 0-6, 0-1, 0-1
this.rgb = [
1,
1,
1
]; // read-only 0-1, 0-1, 0-1
this.minH = 0; // read-only 0-6
this.maxH = 6; // read-only 0-6
this.minS = 0; // read-only 0-1
this.maxS = 1; // read-only 0-1
this.minV = 0; // read-only 0-1
this.maxV = 1; // read-only 0-1
this.pickerOnfocus = true; // display picker on focus?
this.pickerMode = 'HSV'; // HSV | HVS
this.pickerPosition = 'bottom'; // left | right | top | bottom
this.pickerSmartPosition = true; // automatically adjust picker position when necessary
this.pickerFixedPosition = false; // set to true to stop picker from moving on scroll
this.pickerButtonHeight = 20; // px
this.pickerClosable = false;
this.pickerCloseText = 'Close';
this.pickerButtonColor = 'ButtonText'; // px
this.pickerFace = 10; // px
this.pickerFaceColor = 'ThreeDFace'; // CSS color
this.pickerBorder = 1; // px
this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight'; // CSS color
this.pickerInset = 1; // px
this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow'; // CSS color
this.pickerZIndex = 10000;
for (var p in prop) {
if (prop.hasOwnProperty(p)) {
this[p] = prop[p];
}
}
this.hidePicker = function () {
if (isPickerOwner()) {
removePicker();
}
};
this.showPicker = function () {
if (!isPickerOwner()) {
var tp = jscolor.getElementPos(target); // target pos
var ts = jscolor.getElementSize(target); // target size
var vp = jscolor.getViewPos(); // view pos
var vs = jscolor.getViewSize(); // view size
var ps = getPickerDims(this); // picker size
var a,
b,
c;
switch (this.pickerPosition.toLowerCase()) {
case 'left':
a = 1;
b = 0;
c = - 1;
break;
case 'right':
a = 1;
b = 0;
c = 1;
break;
case 'top':
a = 0;
b = 1;
c = - 1;
break;
default:
a = 0;
b = 1;
c = 1;
break;
}
var l = (ts[b] + ps[b]) / 2;
// picker pos
if (!this.pickerSmartPosition) {
var pp = [
tp[a],
tp[b] + ts[b] - l + l * c
];
} else {
var pp = [
- vp[a] + tp[a] + ps[a] > vs[a] ? ( - vp[a] + tp[a] + ts[a] / 2 > vs[a] / 2 && tp[a] + ts[a] - ps[a] >= 0 ? tp[a] + ts[a] - ps[a] : tp[a]) :
tp[a],
- vp[b] + tp[b] + ts[b] + ps[b] - l + l * c > vs[b] ? ( - vp[b] + tp[b] + ts[b] / 2 > vs[b] / 2 && tp[b] + ts[b] - l - l * c >= 0 ? tp[b] + ts[b] - l - l * c : tp[b] + ts[b] - l + l * c) : (tp[b] + ts[b] - l + l * c >= 0 ? tp[b] + ts[b] - l + l * c : tp[b] + ts[b] - l - l * c)
];
}
drawPicker(pp[a], pp[b]);
}
};
this.importColor = function () {
if (!valueElement) {
this.exportColor();
} else {
if (!this.adjust) {
if (!this.fromString(valueElement.value, leaveValue)) {
styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
styleElement.style.color = styleElement.jscStyle.color;
this.exportColor(leaveValue | leaveStyle);
}
} else if (!this.required && /^\s*$/.test(valueElement.value)) {
valueElement.value = '';
styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
styleElement.style.color = styleElement.jscStyle.color;
this.exportColor(leaveValue | leaveStyle);
} else if (this.fromString(valueElement.value)) {
// OK
} else {
this.exportColor();
}
}
};
this.exportColor = function (flags) {
if (!(flags & leaveValue) && valueElement) {
var value = this.toString();
if (this.caps) {
value = value.toUpperCase();
}
if (this.hash) {
value = '#' + value;
}
valueElement.value = value;
}
if (!(flags & leaveStyle) && styleElement) {
styleElement.style.backgroundImage = 'none';
styleElement.style.backgroundColor =
'#' + this.toString();
styleElement.style.color =
0.213 * this.rgb[0] +
0.715 * this.rgb[1] +
0.072 * this.rgb[2]
< 0.5 ? '#FFF' : '#000';
}
if (!(flags & leavePad) && isPickerOwner()) {
redrawPad();
}
if (!(flags & leaveSld) && isPickerOwner()) {
redrawSld();
}
};
this.fromHSV = function (h, s, v, flags) { // null = don't change
if (h !== null) {
h = Math.max(0, this.minH, Math.min(6, this.maxH, h));
}
if (s !== null) {
s = Math.max(0, this.minS, Math.min(1, this.maxS, s));
}
if (v !== null) {
v = Math.max(0, this.minV, Math.min(1, this.maxV, v));
}
this.rgb = HSV_RGB(h === null ? this.hsv[0] : (this.hsv[0] = h), s === null ? this.hsv[1] : (this.hsv[1] = s), v === null ? this.hsv[2] : (this.hsv[2] = v)
);
this.exportColor(flags);
};
this.fromRGB = function (r, g, b, flags) { // null = don't change
if (r !== null) {
r = Math.max(0, Math.min(1, r));
}
if (g !== null) {
g = Math.max(0, Math.min(1, g));
}
if (b !== null) {
b = Math.max(0, Math.min(1, b));
}
var hsv = RGB_HSV(r === null ? this.rgb[0] : r, g === null ? this.rgb[1] : g, b === null ? this.rgb[2] : b
);
if (hsv[0] !== null) {
this.hsv[0] = Math.max(0, this.minH, Math.min(6, this.maxH, hsv[0]));
}
if (hsv[2] !== 0) {
this.hsv[1] = hsv[1] === null ? null : Math.max(0, this.minS, Math.min(1, this.maxS, hsv[1]));
}
this.hsv[2] = hsv[2] === null ? null : Math.max(0, this.minV, Math.min(1, this.maxV, hsv[2]));
// update RGB according to final HSV, as some values might be trimmed
var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]);
this.rgb[0] = rgb[0];
this.rgb[1] = rgb[1];
this.rgb[2] = rgb[2];
this.exportColor(flags);
};
this.fromString = function (hex, flags) {
var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
if (!m) {
return false;
} else {
if (m[1].length === 6) { // 6-char notation
this.fromRGB(parseInt(m[1].substr(0, 2), 16) / 255, parseInt(m[1].substr(2, 2), 16) / 255, parseInt(m[1].substr(4, 2), 16) / 255, flags
);
} else { // 3-char notation
this.fromRGB(parseInt(m[1].charAt(0) + m[1].charAt(0), 16) / 255, parseInt(m[1].charAt(1) + m[1].charAt(1), 16) / 255, parseInt(m[1].charAt(2) + m[1].charAt(2), 16) / 255, flags
);
}
return true;
}
};
this.toString = function () {
return ((256 | Math.round(255 * this.rgb[0])).toString(16).substr(1) + (256 | Math.round(255 * this.rgb[1])).toString(16).substr(1) + (256 | Math.round(255 * this.rgb[2])).toString(16).substr(1)
);
};
function RGB_HSV(r, g, b) {
var n = Math.min(Math.min(r, g), b);
var v = Math.max(Math.max(r, g), b);
var m = v - n;
if (m === 0) {
return [null,
0,
v];
}
var h = r === n ? 3 + (b - g) / m : (g === n ? 5 + (r - b) / m : 1 + (g - r) / m);
return [h === 6 ? 0 : h,
m / v,
v];
}
function HSV_RGB(h, s, v) {
if (h === null) {
return [v,
v,
v];
}
var i = Math.floor(h);
var f = i % 2 ? h - i : 1 - (h - i);
var m = v * (1 - s);
var n = v * (1 - s * f);
switch (i) {
case 6:
case 0:
return [v,
n,
m];
case 1:
return [n,
v,
m];
case 2:
return [m,
v,
n];
case 3:
return [m,
n,
v];
case 4:
return [n,
m,
v];
case 5:
return [v,
m,
n];
}
}
function removePicker() {
delete jscolor.picker.owner;
document.getElementsByTagName('body') [0].removeChild(jscolor.picker.boxB);
}
function drawPicker(x, y) {
if (!jscolor.picker) {
jscolor.picker = {
box: document.createElement('div'),
boxB: document.createElement('div'),
pad: document.createElement('div'),
padB: document.createElement('div'),
padM: document.createElement('div'),
sld: document.createElement('div'),
sldB: document.createElement('div'),
sldM: document.createElement('div'),
btn: document.createElement('div'),
btnS: document.createElement('span'),
btnT: document.createTextNode(THIS.pickerCloseText)
};
for (var i = 0, segSize = 4; i < jscolor.images.sld[1]; i += segSize) {
var seg = document.createElement('div');
seg.style.height = segSize + 'px';
seg.style.fontSize = '1px';
seg.style.lineHeight = '0';
jscolor.picker.sld.appendChild(seg);
}
jscolor.picker.sldB.appendChild(jscolor.picker.sld);
jscolor.picker.box.appendChild(jscolor.picker.sldB);
jscolor.picker.box.appendChild(jscolor.picker.sldM);
jscolor.picker.padB.appendChild(jscolor.picker.pad);
jscolor.picker.box.appendChild(jscolor.picker.padB);
jscolor.picker.box.appendChild(jscolor.picker.padM);
jscolor.picker.btnS.appendChild(jscolor.picker.btnT);
jscolor.picker.btn.appendChild(jscolor.picker.btnS);
jscolor.picker.box.appendChild(jscolor.picker.btn);
jscolor.picker.boxB.appendChild(jscolor.picker.box);
}
var p = jscolor.picker;
// controls interaction
p.box.onmouseup =
p.box.onmouseout = function () {
target.focus();
};
p.box.onmousedown = function () {
abortBlur = true;
};
p.box.onmousemove = function (e) {
if (holdPad || holdSld) {
holdPad && setPad(e);
holdSld && setSld(e);
if (document.selection) {
document.selection.empty();
} else if (window.getSelection) {
window.getSelection().removeAllRanges();
}
dispatchImmediateChange();
}
};
if ('ontouchstart' in window) { // if touch device
var handle_touchmove = function (e) {
var event = {
'offsetX': e.touches[0].pageX - touchOffset.X,
'offsetY': e.touches[0].pageY - touchOffset.Y
};
if (holdPad || holdSld) {
holdPad && setPad(event);
holdSld && setSld(event);
dispatchImmediateChange();
}
e.stopPropagation(); // prevent move "view" on broswer
e.preventDefault(); // prevent Default - Android Fix (else android generated only 1-2 touchmove events)
};
p.box.removeEventListener('touchmove', handle_touchmove, false)
p.box.addEventListener('touchmove', handle_touchmove, false)
}
p.padM.onmouseup =
p.padM.onmouseout = function () {
if (holdPad) {
holdPad = false;
jscolor.fireEvent(valueElement, 'change');
}
};
p.padM.onmousedown = function (e) {
// if the slider is at the bottom, move it up
switch (modeID) {
case 0:
if (THIS.hsv[2] === 0) {
THIS.fromHSV(null, null, 1);
};
break;
case 1:
if (THIS.hsv[1] === 0) {
THIS.fromHSV(null, 1, null);
};
break;
}
holdSld = false;
holdPad = true;
setPad(e);
dispatchImmediateChange();
};
if ('ontouchstart' in window) {
p.padM.addEventListener('touchstart', function (e) {
touchOffset = {
'X': e.target.offsetParent.offsetLeft,
'Y': e.target.offsetParent.offsetTop
};
this.onmousedown({
'offsetX': e.touches[0].pageX - touchOffset.X,
'offsetY': e.touches[0].pageY - touchOffset.Y
});
});
}
p.sldM.onmouseup =
p.sldM.onmouseout = function () {
if (holdSld) {
holdSld = false;
jscolor.fireEvent(valueElement, 'change');
}
};
p.sldM.onmousedown = function (e) {
holdPad = false;
holdSld = true;
setSld(e);
dispatchImmediateChange();
};
if ('ontouchstart' in window) {
p.sldM.addEventListener('touchstart', function (e) {
touchOffset = {
'X': e.target.offsetParent.offsetLeft,
'Y': e.target.offsetParent.offsetTop
};
this.onmousedown({
'offsetX': e.touches[0].pageX - touchOffset.X,
'offsetY': e.touches[0].pageY - touchOffset.Y
});
});
}
// picker
var dims = getPickerDims(THIS);
p.box.style.width = dims[0] + 'px';
p.box.style.height = dims[1] + 'px';
// picker border
p.boxB.style.position = THIS.pickerFixedPosition ? 'fixed' : 'absolute';
p.boxB.style.clear = 'both';
p.boxB.style.left = x + 'px';
p.boxB.style.top = y + 'px';
p.boxB.style.zIndex = THIS.pickerZIndex;
p.boxB.style.border = THIS.pickerBorder + 'px solid';
p.boxB.style.borderColor = THIS.pickerBorderColor;
p.boxB.style.background = THIS.pickerFaceColor;
// pad image
p.pad.style.width = jscolor.images.pad[0] + 'px';
p.pad.style.height = jscolor.images.pad[1] + 'px';
// pad border
p.padB.style.position = 'absolute';
p.padB.style.left = THIS.pickerFace + 'px';
p.padB.style.top = THIS.pickerFace + 'px';
p.padB.style.border = THIS.pickerInset + 'px solid';
p.padB.style.borderColor = THIS.pickerInsetColor;
// pad mouse area
p.padM.style.position = 'absolute';
p.padM.style.left = '0';
p.padM.style.top = '0';
p.padM.style.width = THIS.pickerFace + 2 * THIS.pickerInset + jscolor.images.pad[0] + jscolor.images.arrow[0] + 'px';
p.padM.style.height = p.box.style.height;
p.padM.style.cursor = 'crosshair';
// slider image
p.sld.style.overflow = 'hidden';
p.sld.style.width = jscolor.images.sld[0] + 'px';
p.sld.style.height = jscolor.images.sld[1] + 'px';
// slider border
p.sldB.style.display = THIS.slider ? 'block' : 'none';
p.sldB.style.position = 'absolute';
p.sldB.style.right = THIS.pickerFace + 'px';
p.sldB.style.top = THIS.pickerFace + 'px';
p.sldB.style.border = THIS.pickerInset + 'px solid';
p.sldB.style.borderColor = THIS.pickerInsetColor;
// slider mouse area
p.sldM.style.display = THIS.slider ? 'block' : 'none';
p.sldM.style.position = 'absolute';
p.sldM.style.right = '0';
p.sldM.style.top = '0';
p.sldM.style.width = jscolor.images.sld[0] + jscolor.images.arrow[0] + THIS.pickerFace + 2 * THIS.pickerInset + 'px';
p.sldM.style.height = p.box.style.height;
try {
p.sldM.style.cursor = 'pointer';
} catch (eOldIE) {
p.sldM.style.cursor = 'hand';
}
// "close" button
function setBtnBorder() {
var insetColors = THIS.pickerInsetColor.split(/\s+/);
var pickerOutsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
p.btn.style.borderColor = pickerOutsetColor;
}
p.btn.style.display = THIS.pickerClosable ? 'block' : 'none';
p.btn.style.position = 'absolute';
p.btn.style.left = THIS.pickerFace + 'px';
p.btn.style.bottom = THIS.pickerFace + 'px';
p.btn.style.padding = '0 15px';
p.btn.style.height = '18px';
p.btn.style.border = THIS.pickerInset + 'px solid';
setBtnBorder();
p.btn.style.color = THIS.pickerButtonColor;
p.btn.style.font = '12px sans-serif';
p.btn.style.textAlign = 'center';
try {
p.btn.style.cursor = 'pointer';
} catch (eOldIE) {
p.btn.style.cursor = 'hand';
}
p.btn.onmousedown = function () {
THIS.hidePicker();
};
p.btnS.style.lineHeight = p.btn.style.height;
// load images in optimal order
switch (modeID) {
case 0:
var padImg = 'hs.png';
break;
case 1:
var padImg = 'hv.png';
break;
}
p.padM.style.backgroundImage = 'url(\'' + jscolor.getDir() + 'cross.gif\')';
p.padM.style.backgroundRepeat = 'no-repeat';
p.sldM.style.backgroundImage = 'url(\'' + jscolor.getDir() + 'arrow.gif\')';
p.sldM.style.backgroundRepeat = 'no-repeat';
p.pad.style.backgroundImage = 'url(\'' + jscolor.getDir() + padImg + '\')';
p.pad.style.backgroundRepeat = 'no-repeat';
p.pad.style.backgroundPosition = '0 0';
// place pointers
redrawPad();
redrawSld();
jscolor.picker.owner = THIS;
document.getElementsByTagName('body') [0].appendChild(p.boxB);
}
function getPickerDims(o) {
var dims = [
2 * o.pickerInset + 2 * o.pickerFace + jscolor.images.pad[0] + (o.slider ? 2 * o.pickerInset + 2 * jscolor.images.arrow[0] + jscolor.images.sld[0] : 0),
o.pickerClosable ?
4 * o.pickerInset + 3 * o.pickerFace + jscolor.images.pad[1] + o.pickerButtonHeight :
2 * o.pickerInset + 2 * o.pickerFace + jscolor.images.pad[1]
];
return dims;
}
function redrawPad() {
// redraw the pad pointer
switch (modeID) {
case 0:
var yComponent = 1;
break;
case 1:
var yComponent = 2;
break;
}
var x = Math.round((THIS.hsv[0] / 6) * (jscolor.images.pad[0] - 1));
var y = Math.round((1 - THIS.hsv[yComponent]) * (jscolor.images.pad[1] - 1));
jscolor.picker.padM.style.backgroundPosition = (THIS.pickerFace + THIS.pickerInset + x - Math.floor(jscolor.images.cross[0] / 2)) + 'px ' + (THIS.pickerFace + THIS.pickerInset + y - Math.floor(jscolor.images.cross[1] / 2)) + 'px';
// redraw the slider image
var seg = jscolor.picker.sld.childNodes;
switch (modeID) {
case 0:
var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
for (var i = 0; i < seg.length; i += 1) {
seg[i].style.backgroundColor = 'rgb(' + (rgb[0] * (1 - i / seg.length) * 100) + '%,' + (rgb[1] * (1 - i / seg.length) * 100) + '%,' + (rgb[2] * (1 - i / seg.length) * 100) + '%)';
}
break;
case 1:
var rgb,
s,
c = [
THIS.hsv[2],
0,
0
];
var i = Math.floor(THIS.hsv[0]);
var f = i % 2 ? THIS.hsv[0] - i : 1 - (THIS.hsv[0] - i);
switch (i) {
case 6:
case 0:
rgb = [
0,
1,
2
];
break;
case 1:
rgb = [
1,
0,
2
];
break;
case 2:
rgb = [
2,
0,
1
];
break;
case 3:
rgb = [
2,
1,
0
];
break;
case 4:
rgb = [
1,
2,
0
];
break;
case 5:
rgb = [
0,
2,
1
];
break;
}
for (var i = 0; i < seg.length; i += 1) {
s = 1 - 1 / (seg.length - 1) * i;
c[1] = c[0] * (1 - s * f);
c[2] = c[0] * (1 - s);
seg[i].style.backgroundColor = 'rgb(' + (c[rgb[0]] * 100) + '%,' + (c[rgb[1]] * 100) + '%,' + (c[rgb[2]] * 100) + '%)';
}
break;
}
}
function redrawSld() {
// redraw the slider pointer
switch (modeID) {
case 0:
var yComponent = 2;
break;
case 1:
var yComponent = 1;
break;
}
var y = Math.round((1 - THIS.hsv[yComponent]) * (jscolor.images.sld[1] - 1));
jscolor.picker.sldM.style.backgroundPosition =
'0 ' + (THIS.pickerFace + THIS.pickerInset + y - Math.floor(jscolor.images.arrow[1] / 2)) + 'px';
}
function isPickerOwner() {
return jscolor.picker && jscolor.picker.owner === THIS;
}
function blurTarget() {
if (valueElement === target) {
THIS.importColor();
}
if (THIS.pickerOnfocus) {
THIS.hidePicker();
}
}
function blurValue() {
if (valueElement !== target) {
THIS.importColor();
}
}
function setPad(e) {
var mpos = jscolor.getRelMousePos(e);
var x = mpos.x - THIS.pickerFace - THIS.pickerInset;
var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
switch (modeID) {
case 0:
THIS.fromHSV(x * (6 / (jscolor.images.pad[0] - 1)), 1 - y / (jscolor.images.pad[1] - 1), null, leaveSld);
break;
case 1:
THIS.fromHSV(x * (6 / (jscolor.images.pad[0] - 1)), null, 1 - y / (jscolor.images.pad[1] - 1), leaveSld);
break;
}
}
function setSld(e) {
var mpos = jscolor.getRelMousePos(e);
var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
switch (modeID) {
case 0:
THIS.fromHSV(null, null, 1 - y / (jscolor.images.sld[1] - 1), leavePad);
break;
case 1:
THIS.fromHSV(null, 1 - y / (jscolor.images.sld[1] - 1), null, leavePad);
break;
}
}
function dispatchImmediateChange() {
if (THIS.onImmediateChange) {
var callback;
if (typeof THIS.onImmediateChange === 'string') {
callback = new Function(THIS.onImmediateChange);
} else {
callback = THIS.onImmediateChange;
}
callback.call(THIS);
}
}
var THIS = this;
var modeID = this.pickerMode.toLowerCase() === 'hvs' ? 1 : 0;
var abortBlur = false;
var
valueElement = jscolor.fetchElement(this.valueElement),
styleElement = jscolor.fetchElement(this.styleElement);
var
holdPad = false,
holdSld = false,
touchOffset = {
};
var
leaveValue = 1 << 0,
leaveStyle = 1 << 1,
leavePad = 1 << 2,
leaveSld = 1 << 3;
jscolor.isColorAttrSupported = false;
var el = document.createElement('input');
if (el.setAttribute) {
el.setAttribute('type', 'color');
if (el.type.toLowerCase() == 'color') {
jscolor.isColorAttrSupported = true;
}
}
// target
jscolor.addEvent(target, 'focus', function () {
if (THIS.pickerOnfocus) {
THIS.showPicker();
}
});
jscolor.addEvent(target, 'blur', function () {
if (!abortBlur) {
window.setTimeout(function () {
abortBlur || blurTarget();
abortBlur = false;
}, 0);
} else {
abortBlur = false;
}
});
// valueElement
if (valueElement) {
var updateField = function () {
THIS.fromString(valueElement.value, leaveValue);
dispatchImmediateChange();
};
jscolor.addEvent(valueElement, 'keyup', updateField);
jscolor.addEvent(valueElement, 'input', updateField);
jscolor.addEvent(valueElement, 'blur', blurValue);
valueElement.setAttribute('autocomplete', 'off');
}
// styleElement
if (styleElement) {
styleElement.jscStyle = {
backgroundImage: styleElement.style.backgroundImage,
backgroundColor: styleElement.style.backgroundColor,
color: styleElement.style.color
};
}
// require images
switch (modeID) {
case 0:
jscolor.requireImage('hs.png');
break;
case 1:
jscolor.requireImage('hv.png');
break;
}
jscolor.requireImage('cross.gif');
jscolor.requireImage('arrow.gif');
this.importColor();
}
};
colorTxt.Updater = function () {
$.getScript(colorTxt.updateUrl, function () {
if (scriptUpdate.colorTxt > colorTxt.version) {
var updateMessage = new west.gui.Dialog(colorTxt.Lang.update + ': ' + colorTxt.name, '<span>' + colorTxt.Lang.updateAvailable + '<br><br><b>v' + scriptUpdate.colorTxt + ':</b><br>' + scriptUpdate.colorTxtNew + '</span>', west.gui.Dialog.SYS_WARNING).addButton(colorTxt.Lang.update, function () {
updateMessage.hide();
window.open(colorTxt.updateAd);
}).addButton(colorTxt.Lang.update + ' [NoAds]', function () {
updateMessage.hide();
location.href = colorTxt.website + '/code.user.js';
}).addButton('cancel').show();
}
});
};
setTimeout(colorTxt.Updater, 1000);
jscolor.install();
});