Teil 2 - da Text zu lang
light:'data:image/png;base64,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'
}
};
// Chrome hack
setTimeout(function() {
unsafeWindow.startChat = function() {
if(typeof oldHijack != 'function') return;
oldHijack();
loadChatpartnerList();
loadInterface();
chatExistsNow();
};
unsafeWindow.startChat();
},0);
function loadChatpartnerList(/* optional */xml) {
loadFromLocalStorage();
var $xml = $(unsafeWindow.chatXML);
$xml.find('m').each(xmlEntryToPartnerListEntry);
if(xml) {
var $xmlStr = $((new XMLSerializer()).serializeToString(xml));
$xmlStr.find('m').each(xmlEntryToPartnerListEntry);
}
partnerList = partnerList.filter(checkChatPartnerOutOfTime);
saveToLocalStorage();
}
function checkChatPartnerOutOfTime(vO) {
if(vO.pinned) return true;
var d = parseInt(Date.now()/1000,10);
var keep = vO.lastAction+2*86400 > d;
if(!keep && (idx = filterNames.findIndex(function(el) { return el==vO.name;})) > -1) {
filterNames.splice(idx, 1);
saveToLocalStorage();
}
return keep;
}
function xmlEntryToPartnerListEntry() {
var obj = {
name: unsafeWindow.charID == parseInt($(this).attr('m'),10) ? $(this).attr('a') : $(this).attr('r'),
lastAction: parseInt($(this).attr('t'), 10),
pinned: false
};
if(obj.name == 'Wirt') return;
if(obj.name == 'Juwel der Erfahrung') return;
if(obj.name == 'System') return;
if($(this).attr('c') == 'pn' && !checkIfPartnerIsAlreadyInList(obj.name)) {
partnerList.push(obj);
} else if(checkIfPartnerIsAlreadyInList(obj.name)) {
var o = partnerList.filter(function(el) { return el.name==obj.name; })[0];
o.lastAction = Math.max(obj.lastAction, o.lastAction);
}
}
function loadInterface() {
$interface = $('<div><ul></ul></div>').css({
width:'100%',
position:'relative'
}).children('ul').css({'list-style': 'none', 'padding':'0px', 'margin':'0px'}).end();
$('#chatmessage').after($interface);
$('<style type="text/css"></style>').text('p.ch1, p.ch1 > a { color:black !important; } h4{ text-decoration:underline; } .chatPartner { -moz-user-select: none; -khtml-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; } .selected { opacity:0.9; font-weight:bold; } .hovered { text-decoration:underline;}').appendTo('head');
}
function updateList() {
partnerList.sort(function(a, b) {
if(a.lastAction == b.lastAction) return 0;
return a.lastAction < b.lastAction ? 1 : -1;
});
$interface.children('ul').children('li').remove();
$.each(partnerList, function(k, v) {
$interface.children('ul').append(createListItem(v, v.name==chat.config.PN));
});
if(!$('div:contains([?])').length) {
var marginTop = cpos==1?0:-600;
var width = cpos==1?700:1000;
var $infoDiv = $('<div style="overflow-y:scroll;display:none;position:absolute;margin-top:20px;padding:20px;background-color:white;color:black;width:0;height:0;z-index:1000;"></div>').mouseenter(function(evt) {
$infoDiv.css({
top:evt.pageY,
right:$('body').width()-parseInt(evt.pageX,10)
});
$(this).stop().animate({
width:width,
height:'600px',
opacity:1.0,
display:'block',
marginTop:marginTop
},500);
}).mouseleave(function() {
$(this).stop().animate({
width:0,
height:0,
opacity:0.0,
display:'none',
marginTop:0
},500);
}).html('<h3>Kurz Anleitung</h3><h4>Im chat</h4>- [Shift] + Linksklick auf einen Namen: SpielerIn ins Tool aufnehmen<h4>Im Tool</h4>- Klick: Flüstermodus mit der Person starten<br>- [Ctrl] + Klick: Aus Tool entfernen (geht nur, falls kein aktives Gespräch mit der Person stattfindet)<br>- Doppelklick: Chat nach Nachrichten dieser Person filtern<br>- [Ctrl] + Doppelklick: Nachrichten dieser Person aus dem Chat filtern<h4>Im Tool - Fokus im Eingabefeld</h4>- [Tab]: Wechsel des Flüstermodus zu anderer Person<br>- [Ctrl] + A: Wechsel zum Alle-Chat<br>- [Ctrl] + G: Wechsel zum Gilde-Chat<br>- [Ctrl] + F: Wechsel zum Fraktion-Chat<br>- [Ctrl] + P: Wechsel zum PN-Chat<br>- [Ctrl] + R: Wechsel zum RP-Chat<br>- [Ctrl] + M: Wechsel zum Mod-Chat<br>- [Ctrl] + N: Aufheben des Flüstermodus (Alternative zum Klick auf das Briefsymbol)<br><br>- Klick auf das Pin-Icon: Pinned einen Spieler / eine Spielerin fest (verschwindet nicht nach 48 Stunden)<br>- Hover über das Pin-Icon: Ansicht, wann der Spieler / die Spielerin aus der Liste verschwindet<br>- Hover über einen Namen: Im Chat werden die PN-Nachrichten(!!) hervorgehoben und alles andere etwas blasser<br><br><input type="checkbox" name="coloring" '+(coloring?'checked="checked"':'')+'> Chatpartnern verschiedene Farben zuweisen<br><input type="checkbox" name="hoveringOverName" '+(hoveringOverName?'checked="checked"':'')+'> Schaltet das Highlighting beim Tippen an und aus, sowie beim Überfahren von Namen').children('input:checkbox[name=coloring]').click(function() {
coloring = $(this).is(':checked');
updateList();
chat.printMessages('#chat');
saveToLocalStorage();
}).end().children('input:checkbox[name=hoveringOverName]').click(function() {
hoveringOverName = $(this).is(':checked');
updateList();
$('#chatmessage').keyup();
saveToLocalStorage();
}).end();
var $infoDivIcon = $('<div>[?]</div>').css({'font-weight':'bold','cursor':'pointer','position':'absolute',top:0,right:0}).mouseover(function(evt) {
$infoDiv.css({
top:evt.pageY,
right:$('body').width()-parseInt(evt.pageX,10)
});
$infoDiv.stop().animate({
width:width,
height:'600px',
opacity:1.0,
display:'block',
marginTop:marginTop
},500);
}).mouseout(function() {
$infoDiv.stop().animate({
width:0,
height:0,
opacity:0.0,
display:'none',
marginTop:0
},500);
});
$interface.append($infoDivIcon);
$('body').append($infoDiv);
}
}
function chatExistsNow() {
chat = unsafeWindow.chat;
$('#cresd').bind('click',function(event) { chat.resizeT(-1,event);});
var hijacks = [chat.update, chat.filter, chat.resPN, chat.printMessages];
chat.printMessages = function() {
hijacks[3].apply(chat, arguments);
var $ps = $('#chat');
if(coloring) {
$interface.find('li').each(function() {
$('p.ch1:has(a:starts-with('+$(this).children('span').text()+'))', $ps).css('background-color', $(this).data('color'));
});
}
if(hoveringOverName) {
if(hoverOverName) {
$('#chat').children('p').css('opacity', 0.5);
$('#chat').children('p:has(a:starts-with('+hoverOverName+'))').css('opacity', 1);
}
}
};
chat.update = function(xml) {
hijacks[0].apply(chat, arguments);
lastReceivedXMLData = (new XMLSerializer()).serializeToString(xml);
loadChatpartnerList(xml);
chat.printMessages('#chat');
updateList();
};
chat.filter = function(msgID) {
var parts = [
hijacks[1].apply(chat, arguments),
(
filterNames.length && !(filterNames.indexOf(this.messages[msgID].aN) > -1 || filterNames.indexOf(this.messages[msgID].toN) > -1) && filterNames.filter(function(el) { return el.substring(0,1)!='!'; }).length
),
(
filterNames.length && (filterNames.indexOf('!'+this.messages[msgID].aN) > -1 || filterNames.indexOf('!'+this.messages[msgID].toN) > -1)
)
];
return parts.reduce(function(c, i) { return c || i; }, false);
};
chat.resPN = function() {
hijacks[2].apply(chat, arguments);
updateList();
};
$('#chat a[href*="p=showprofile&i="]').live('click', function(e) {
if(e.shiftKey) {
e.preventDefault();
var obj = {
name: $.trim($(this).text()),
lastAction: parseInt(Date.now()/1000,10),
pinned: false
};
if(!checkIfPartnerIsAlreadyInList(obj.name)) {
partnerList.push(obj);
} else {
var o = partnerList.filter(function(el) { return el.name==obj.name; })[0];
o.lastAction = Math.max(obj.lastAction, o.lastAction);
}
saveToLocalStorage();
updateList();
}
});
$('#chatmessage').keydown(function(e) {
if(e.keyCode==9) { // [TAB]
e.preventDefault();
if(tabCounterStatus.lA+750 < Date.now()) {
tabCounterStatus.val = 0;
} else {
tabCounterStatus.val = (tabCounterStatus.val+1) % $('li.chatPartner').size();
}
$('li.chatPartner').removeClass('hovered');
if(tabCounterStatus.handle)
clearTimeout(tabCounterStatus.handle);
if(!$('li.chatPartner').eq(tabCounterStatus.val).hasClass('selected')) {
$('li.chatPartner').eq(tabCounterStatus.val).addClass('hovered');
tabCounterStatus.handle = setTimeout(function() {
$('li.chatPartner').removeClass('hovered');
$('li.chatPartner').eq(tabCounterStatus.val).click();
}, 800);
}
tabCounterStatus.lA = Date.now();
}
if(e.ctrlKey && (cchan = ['A'.charCodeAt(), 'G'.charCodeAt(), 'F'.charCodeAt(), 'P'.charCodeAt(), 'R'.charCodeAt(), 'M'.charCodeAt(), 'N'.charCodeAt()].indexOf(e.keyCode)) > -1 ) {
e.preventDefault();
if(cchan < 6)
chat.changeChannel(cchan);
else
chat.resPN();
}
}).keyup(function(e) {
if(!hoveringOverName) return;
if(this.value.length == 0 || e.keyCode == 13) {
hoverOverName = null;
$('#chat').children('p').css('opacity', 1);
return;
} else if(['@', '/'].indexOf(this.value.substr(0,1)) == -1 && chat.config.PN) {
hoverOverName = chat.config.PN;
} else if(['@'].indexOf(this.value.substr(0,1)) > -1) {
hoverOverName = this.value.substring(1, this.value.indexOf(' ')==-1?this.value.length:this.value.indexOf(' '));
} else if(['/'].indexOf(this.value.substr(0,1)) > -1) {
hoverOverName = null;
$('#chat').children('p').css('opacity', 1);
return;
}
$('#chat').children('p').css('opacity', 0.5);
$('#chat').children('p:has(a:starts-with('+hoverOverName+'))').css('opacity', 1);
});
$('li.chatPartner').live('click', function(e) {
$(this).data('doubleClicked', false);
var self = this;
setTimeout(function() {
if($(self).data('doubleClicked')) return;
var name = $(self).data('name');
if(!name) return;
if(e.ctrlKey) {
if((idx1 = filterNames.indexOf(name)) > -1 || (idx2 = filterNames.indexOf('!'+name)) > -1)
removeFilter(idx1>-1?idx1:idx2);
var idx = partnerList.findIndex(function(el) { return el.name==name; });
partnerList.splice(idx,1);
} else {
chat.setPN(name);
partnerList.filter(function(el) { return el.name==name; })[0].lastAction = parseInt(Date.now()/1000,10);
}
saveToLocalStorage();
$('#chatmessage').focus();
updateList();
}, 200);
});
$('li.chatPartner').live('dblclick', function(e) {
e.preventDefault();
$(this).data('doubleClicked', true);
toggleFilter((e.ctrlKey?'!':'')+$(this).text());
});
updateList();
chat.printMessages('#chat');
}
function toggleFilter(name) {
var pureName = name.substring(0,1)=='!'?name.substring(1):name;
var idx = filterNames.findIndex(function(el) { return (el.substring(0,1)=='!'?el.substring(1):el)==pureName; });
var nameFromArray = idx>-1?filterNames[idx]:null;
if(idx==-1) {
filterNames.push(name);
$('li.chatPartner:contains('+pureName+')').css('border-color', pureName==name?'green':'red');
chat.printMessages('#chat');
} else {
if(name==nameFromArray) {
removeFilter(idx);
} else {
filterNames[idx] = name;
$('li.chatPartner:contains('+pureName+')').css('border-color', pureName==name?'green':'red');
chat.printMessages('#chat');
}
}
saveToLocalStorage();
}
function removeFilter(idx) {
var name = filterNames[idx];
var pureName = name.substring(0,1)=='!'?name.substring(1):name;
filterNames.splice(idx,1);
saveToLocalStorage();
$('li.chatPartner:contains('+pureName+')').css('border-color', borderColor);
chat.printMessages('#chat');
}
function checkIfPartnerIsAlreadyInList(value) {
return partnerList.filter(function(v) { return v.name==value; }).length?true:false;
}
function createListItem(obj, selected) {
// design dependend scheme
var idx = filterNames.findIndex(function(el) { return (el.substring(0,1)=='!'?el.substring(1):el)==obj.name; });
var correctBorderColor = idx==-1?borderColor:(filterNames[idx].substring(0,1)=='!'?'red':'green');
var secondsLeft = parseInt(Date.now()/1000,10)-obj.lastAction;
partnerListSorted = partnerList.slice();
partnerListSorted.sort(function(a, b) {
return a.name > b.name;
});
var idxInDom = partnerListSorted.findIndex(function(el) { return el.name==obj.name; });
var $pin = $('<img />').css({'width': '13px', margin:'0px 5px 1px 0', verticalAlign:'middle'}).attr('src', obj.pinned?images.pinned[imageColor]:images.unpinned[imageColor]).click(function() {
obj.pinned = !obj.pinned;
obj.lastAction = parseInt(Date.now()/1000,10);
saveToLocalStorage();
updateList();
}).attr('title', obj.pinned?'Pinned!':'Verschwindet in '+secToCountdown(secondsLeft)).css('background-color', coloring?colors[idxInDom%colors.length]:'transparent');
var $span = $('<span />').text(obj.name);
var $li = $('<li></li>').css({
border:'1px solid '+borderColor,
backgroundImage:backgroundImage,
padding:'2px 5px',
margin:'1px 2px',
display:'inline-block',
opacity:1,
cursor:'pointer',
borderColor:correctBorderColor,
opacity:obj.pinned?1:(1-((secondsLeft)/(2*24*60*60)))*0.8+0.2 // berechne einen opacity-wert zwischen 0.2 und 1
}).data('name', obj.name).addClass('chatPartner').append($pin).append($span);
$li.data('color', colors[idxInDom%colors.length]);
if(hoveringOverName) {
$li.hover(function() {
hoverOverName = $(this).children('span').text();
$('#chat').children('p').css('opacity', 0.5);
$('#chat').children('p:has(a:contains('+hoverOverName+'))').css('opacity', 1);
}, function() {
$('#chat').children('p').css('opacity', 1);
hoverOverName = null;
});
}
if(selected)
$li.addClass('selected');
return $li;
}
function saveToLocalStorage() {
localStorage.chatpartnerList = JSON.stringify(partnerList);
localStorage.filterNames = JSON.stringify(filterNames);
localStorage.coloring = JSON.stringify(coloring);
localStorage.hoveringOverName = JSON.stringify(hoveringOverName);
}
function loadFromLocalStorage() {
partnerList = JSON.parse(localStorage.chatpartnerList || '[]');
filterNames = JSON.parse(localStorage.filterNames || '[]');
coloring = JSON.parse(localStorage.coloring || true);
hoveringOverName = JSON.parse(localStorage.hoveringOverName || true);
}
function secToCountdown(seconds) {
seconds = 2*86400 - seconds;
var days = parseInt(seconds/86400,10);
var hours= parseInt((seconds%86400)/3600,10);
var mins = parseInt((seconds%3600)/60,10);
var secs = seconds%60;
hours= ('0'+hours).substr(-2);
mins = ('0'+mins).substr(-2);
secs = ('0'+secs).substr(-2);
return (days>0?days+' Tag ':'')+hours+':'+mins+':'+secs;
}
})();