TickerAbo = {
ID_DOM: function() {
return {
ENTRY: "taEntry",
COMMENT: "taComments",
BUTTON_COMMENT_SEND: "taButtonAdd",
FORM_COMMENT_ADD: "taAdd",
TEXTAREA_COMMENT_ADD: "taTextareaComment",
COMMENTS_COUNT: "taCounterComments",
COMMENT_CHARSLEFT: "taCharsLeft",
ABO_STATUS: "tkAboStatus",
TICKER_FAN: "taFan",
TICKER: "ta"
}
}(),
CLASS_DOM: function() {
return {
ENTRY: "entry cf",
ENTRY_HOVER: "entry bgY1 cf",
ABO_ADDED: "link"
}
}(),
CONSTANT: function() {
return {
MAX_CHARS: 250,
LOCK_TIME: 1000,
ABO_SUCCESS: 0,
ABO_ERROR_MAXIMUM_NUMBER_EXCEEDED: 1,
ABO_ERROR_PRIVACY_VIOLATED: 2,
ABO_ERROR_ABO_EXISTS: 3,
ABO_ERROR_UNKNOWN: 4
}
}(),
TEMPLATE: function() {
return{
ICON_OK: "<span class='icOk'>&nbsp;</span>Du bist Fan!",
NO_LINEBREAKS: "Keine Zeilenumbrüche.",
FAN_ADDED: "Du bist nun Fan!",
ALREADY_FAN: "Du bist bereits Fan!",
MAX_NUMBER_OF_FANS: "Du hast bereits die maximale Anzahl von Ticker-Abos erreicht.",
PRIVACY_CONFLICT: "Die Privatsphäre-Einstellungen lassen es derzeit nicht zu, dass du diesen Ticker abonnierst.",
ABO_ADDING_PROBLEM: "Dieser Ticker konnte von dir nicht abonniert werden.\n Die Seite wird neu geladen.",
ABO_CANCELED: "Fan entfernt!",
INFO_LOCK: "Bitte kurz warten...",
ABO_CANCEL_PROBLEM: "Das Stornieren des Abos ist fehlgeschlagen. Die Seite wird neu geladen.",
COMMENT_DISABLED_BY_CONTACTFILTER: "Gegenwärtig lässt der Kontaktfilter keinen Kommentar an dieser Stelle zu.",
PROFILE_NOT_ACTIVATED: "Du musst dein Profil erst aktivieren.\n<a href=\"/activate\">Hier</a> kannst du dein Profil aktivieren."
}
}(),
lock: false,
setLock: function () {
TickerAbo.lock = true;
window.setTimeout(function(){TickerAbo.lock=false}, TickerAbo.CONSTANT.LOCK_TIME);
},
add: function(fanId, starId, fanHash, trigger) {
var post = {
async: false
};
var addFan = new AjaxHandler();
var callback = {
success: function(content) {
var response = eval("(" + content + ")");
if(response.error) {
SystemMessage.inline.error(TickerAbo.TEMPLATE.PROFILE_NOT_ACTIVATED);
}
else if(response == TickerAbo.CONSTANT.ABO_SUCCESS) {
if (trigger) {
trigger.innerHTML = "<span class='icStar'>&nbsp;</span> Star";
trigger.onclick = function () {
SystemMessage.inline.success("Du bist bereits Fan!");
}
}
Jpy.remove("prMore");
SystemMessage.inline.success("Du bist nun Fan!");
}
else if(response == TickerAbo.CONSTANT.ABO_ERROR_MAXIMUM_NUMBER_EXCEEDED) {
SystemMessage.inline.error(TickerAbo.TEMPLATE.MAX_NUMBER_OF_FANS);
}
else if (response == TickerAbo.CONSTANT.ABO_ERROR_PRIVACY_VIOLATED) {
SystemMessage.inline.error(TickerAbo.TEMPLATE.PRIVACY_CONFLICT)
}
else {
SystemMessage.inline.error(TickerAbo.TEMPLATE.ABO_ADDING_PROBLEM);
window.location = window.location;
}
}
};
addFan.request("POST", "/backend/user/tickerAbo.php/add/" + fanId + "/" + starId + "?h=" + fanHash, callback, post);
},
erase: function(fanId, starId, reason, hash, context) {
var eraseFan = new AjaxHandler();
var callback = {
success: function(response) {
if(response == TickerAbo.CONSTANT.ABO_SUCCESS ) {
if(!context) {
Jpy.remove("prMore");
Jpy.remove("tkAboStatus");
SystemMessage.inline.success("Du bist kein Fan mehr!");
}
else if (context == "fanList") {
document.getElementById(TickerAbo.ID_DOM.TICKER_FAN+fanId).style.display = "none";
SystemMessage.inline.success("Fan entfernt!");
}
}
else {
SystemMessage.inline.error(TickerAbo.TEMPLATE.ABO_CANCEL_PROBLEM+response);
if(!context) {
window.location = window.location;
}
}
}
};
eraseFan.request("GET", "/backend/user/tickerAbo.php/erase/" + fanId + "/" + starId + "/" + reason + "?h=" + hash, callback);
},
init: function () {
if ((/user/g).test(window.location) == false) {
var divBoxes = document.getElementById(TickerAbo.ID_DOM.TICKER).getElementsByTagName('div');
var entryList = [];
for (var i = 0, len = divBoxes.length; i < len; i++) {
if (divBoxes[i].className == TickerAbo.CLASS_DOM.ENTRY) {
entryList.push(divBoxes[i]);
}
}
for (var i = 0, len = entryList.length; i < len; i++) {
entryList[i].onmouseover = function () {
this.className = TickerAbo.CLASS_DOM.ENTRY_HOVER;
};
entryList[i].onmouseout = function () {
this.className = TickerAbo.CLASS_DOM.ENTRY;
}
}
}
if (document.getElementById('taAddEntryTextarea')) {
document.getElementById('taAddEntryTextarea').onclick = function () {
TickerAbo.startpage.showTextarea();
}
}
},
comments: {
displayLatest: function (tickerEntryId, tickerAuthorId, forceDisplay) {
if (arguments.length < 3) {
forceDisplay = false;
}
var entryId = TickerAbo.ID_DOM.ENTRY+tickerEntryId+"-"+tickerAuthorId;
var commentId = TickerAbo.ID_DOM.COMMENT+tickerEntryId+"-"+tickerAuthorId;
if (document.getElementById(commentId) && forceDisplay != true) {
if (document.getElementById(commentId).style.display == "block") {
document.getElementById(commentId).style.display = "none";
}
else if (document.getElementById(commentId).style.display == "none") {
document.getElementById(commentId).style.display = "block";
}
}
else {
if (document.getElementById(commentId)) {
document.getElementById(entryId).removeChild(document.getElementById(commentId));
}
var response = $.ajax({
url: "/backend/user/tickerAbo.php/tickerEntryCommentsLatest/" + tickerEntryId + "/" + tickerAuthorId,
async: false
}).responseText;
var comments = document.getElementById(entryId).appendChild(document.createElement('div'));
comments.id = commentId;
comments.innerHTML = response;
comments.style.display = "block";
document.getElementById(TickerAbo.ID_DOM.TEXTAREA_COMMENT_ADD+tickerEntryId+"-"+tickerAuthorId).focus();
}
document.getElementById(TickerAbo.ID_DOM.TEXTAREA_COMMENT_ADD+tickerEntryId+"-"+tickerAuthorId).onkeyup = function () {
TickerAbo.comments.observeChars.init(this);
}
document.getElementById(TickerAbo.ID_DOM.BUTTON_COMMENT_SEND+tickerEntryId+"-"+tickerAuthorId).onclick = function () {
TickerAbo.comments.add(tickerEntryId, tickerAuthorId);
}
return false;
},
observeChars: {
entryId: 0,
init: function(textarea) {
if (TickerAbo.comments.observeChars.entryId == 0) {
var readId = textarea.id;
TickerAbo.comments.observeChars.entryId = readId.replace(/[a-z]*[A-Z]*/g, "");
}
 TickerAbo.comments.observeChars.limitValue(textarea)
},
limitValue: function (textarea) {
var entry = textarea.value;
var balance = TickerAbo.CONSTANT.MAX_CHARS - entry.length;
var counterArea = document.getElementById(TickerAbo.ID_DOM.COMMENT_CHARSLEFT+TickerAbo.comments.observeChars.entryId)
var counterValue = counterArea.getElementsByTagName("b")[0];
if (balance > 0) {
counterValue.innerHTML = balance;
if (entry.search(/\n|\r/) != -1) {
var info = textarea.appendChild(document.createElement('div'));
info.id = "COMMENT_CHARSLEFT_INFO";
info.style.background = "#e1e1e1";
info.className = "pd5";
info.innerHTML += "<br><b>"+Ticker.TEMPLATE.NO_LINEBREAKS+"</b>";
}
textarea.value = entry.replace(/\n|\r/g, "");
}
else {
counterArea.innerHTML += "<br><i>Zeichenlimit "+ TickerAbo.CONSTANT.MAX_CHARS +" </i>";
entry.replace(/\n|\r/g, "").slice(0,TickerAbo.CONSTANT.MAX_CHARS);
}
}
},
add: function (tickerEntryId, tickerAuthorId) {
var newCommentText = document.getElementById(TickerAbo.ID_DOM.TEXTAREA_COMMENT_ADD+tickerEntryId+"-"+tickerAuthorId).value;
var verifyStatus = TickerAbo.comments.verify(newCommentText);
function updateCounter () {
if (document.getElementById(TickerAbo.ID_DOM.COMMENTS_COUNT+tickerEntryId+"-"+tickerAuthorId)) {
document.getElementById(TickerAbo.ID_DOM.COMMENTS_COUNT+tickerEntryId+"-"+tickerAuthorId).innerHTML = parseInt(document.getElementById(TickerAbo.ID_DOM.COMMENTS_COUNT+tickerEntryId+"-"+tickerAuthorId).innerHTML)+1
}
}
if (newCommentText.length > 0 && verifyStatus == false && TickerAbo.lock == false) {
TickerAbo.comments.observeChars.entryId = 0;
var response = $.ajax({
url: "/backend/user/tickerAbo.php/tickerEntryCommentAdd/" + tickerEntryId + "/" + tickerAuthorId + "?h=" + User.hash,
data: ({
"data": newCommentText
}),
async: false,
type: "POST"
}).responseText;
if (response == "ok") {
TickerAbo.comments.displayLatest(tickerEntryId, tickerAuthorId, true);
TickerAbo.setLock();
updateCounter();
return true;
}
else if(response) {
response = eval("(" + response + ")");
alert(response.error);
return false;
}
}
},
verify: function (text) {
if ((/[\<\u003C]{1}[s\u0053S\u0073]{1}[c\u0043C\u0063]{1}[r\u0052R\u0072]{1}[i\u0049I\u0069]{1}[p\u0050P\u0070]{1}[t\u0054T\u0074]{1}/).test(text) == true || (/javascript\:|javascript/g).test(text) == true) {
return true;
}
else {
return false;
}
},
close: function (entryId, authorId) {
if (entryId.typeOf != "number") {
var tigger = entryId+"-"+authorId;
entryId = tigger.parentNode.parentNode.parentNode.id;
entryId = entryId.replace(/[a-z]*[A-Z]*/g, "");
}
if (document.getElementById(TickerAbo.ID_DOM.COMMENT+entryId+"-"+authorId)) {
document.getElementById(TickerAbo.ID_DOM.ENTRY+entryId).removeChild(document.getElementById(TickerAbo.ID_DOM.COMMENT+entryId+"-"+authorId));
}
document.getElementById(TickerAbo.ID_DOM.ENTRY+entryId+"-"+authorId).className = TickerAbo.CLASS_DOM.ENTRY;
}
},
startpage: {
showTextarea: function () {
var textarea = document.getElementById('taAddEntryTextarea');
if (textarea.value == "Tickereintrag schreiben ...") {
textarea.value = "";
MessageEditor.register(textarea, "noSmilies simpleFonts noColors noImages noQuote focus","", undefined, 234);
textarea.focus();
}
textarea.style.height = "75px";
document.getElementById('taAddEntrySubmit').parentNode.style.display = "block";
textarea.style.color = "#333333";
document.getElementById('taAddEntrySubmit').onclick = function () {
TickerAbo.startpage.send();
}
textarea.onkeyup = function () {
TickerAbo.startpage.limitValue(textarea);
}
textarea.onfocus = function () {
if (textarea.value == textarea.defaultValue) {
textarea.value = "";
}
}
},
setPrivacy: function (trigger) {
var textAll = "<span class='icPrivacyAll'>&nbsp;</span> An Alle";
var textBuddy = "<span class='icPrivacyBuddies'>&nbsp;</span> An Freunde";
if (TickerAbo.startpage.privacyStatus == undefined) TickerAbo.startpage.privacyStatus = TickerAboPrivacyStatus;
if (TickerAbo.startpage.privacyStatus == 0) {
trigger.innerHTML = textBuddy;
TickerAbo.startpage.privacyStatus = 1;
}
else {
trigger.innerHTML = textAll;
TickerAbo.startpage.privacyStatus = 0
}
},
send: function () {
if (!TickerAbo.startpage.privacyStatus) TickerAbo.startpage.privacyStatus = TickerAboPrivacyStatus;
if (TickerAbo.startpage.lock.status == false) {
var textValue = document.getElementById("taAddEntryTextarea").value;
if (textValue == "Tickereintrag schreiben ..." || textValue == "") {
SystemMessage.inline.error("Tickereintrag ist leer!");
return;
}
TickerAbo.startpage.lock.set();
document.getElementById("taAddEntryTextarea").value = "bitte warten ...";
$.post(
"/backend/user/ticker.php?h=" + User.hash,
{
text: textValue,
tickerEntrySetting: TickerAbo.startpage.privacyStatus,
action: "addEntry"
},
function(data) {
var data = eval("("+ data+ ")");
if (!data.error) {
document.getElementById('taAddEntryTextarea').value = "";
TickerAbo.startpage.getLatestEntries();
}
else {
SystemMessage.inline.error(data.error);
}
}
);
}
else {
var position = {
x: "20%",
y: "600px"
}
SystemMessage.inline.error("Es wird bereits eine Aktion ausgeführt oder du schreibst du schnell. Bitte kurz warten ...", 2000, position);
}
},
getLatestEntries: function () {
$.post(
"/backend/user/tickerAbo.php",
{
action: "updateLatestTickerEntries",
numberOfEntriesPerPage: 8,
startIndex: 0
},
function(data) {
if (data) {
document.getElementById('ta').innerHTML = data;
if (document.getElementById('taAddEntryTextarea')) {
document.getElementById('taAddEntryTextarea').onclick = function () {
TickerAbo.startpage.showTextarea();
}
}
}
else {
SystemMessage.inline.error(data.error);
}
}
);
},
lock: {
status: false,
set: function () {
TickerAbo.startpage.lock.status = true;
window.setTimeout("TickerAbo.startpage.lock.open()", 2000);
},
open: function () {
TickerAbo.startpage.lock.status = false;
}
},
limitValue: function (textarea) {
var entry = textarea.value;
var balance = TickerAbo.CONSTANT.MAX_CHARS - entry.length;
if (balance < 50) {
var info;
if (balance <= 0) {
info = "Keine Zeichen frei!"
entry = entry.replace(/\n|\r/g, "").slice(0,TickerAbo.CONSTANT.MAX_CHARS);
}
else {
info = "nur noch "+balance+" Zeichen frei."
}
if (document.getElementById('taCounterFrame')) {
document.getElementById('taCounterFrame').innerHTML = info;
}
else {
var counterFrame = document.createElement('div');
counterFrame.innerHTML = info;
counterFrame.id = "taCounterFrame";
counterFrame.className = "bgY1 pd5 taC fs12";
counterFrame.style.marginRight = "7px";
document.getElementById('taAddEntryActionbar').insertBefore(counterFrame, document.getElementById('taAddEntrySubmit'));
}
textarea.value = entry.replace(/\n|\r/g, "");
}
else {
textarea.value = entry.replace(/\n|\r/g, "");
Jpy.remove('taCounterFrame');
}
}
}
}
TickerAbo.init();
// Wed Jul 28 18:06:30 2010