var Ticker = {
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",
ENTRY_CHARSLEFT: "taEntryCharsLeft",
TICKER_ADD_TEXTAREA: "taAddTextarea",
TICKER: "ta",
TICKER_FRAME: "tk",
ENTRY_ADD_BUTTON: "taEntrySend",
ENTRY_ADD_FRAME: "taEntryAdd",
ERROR_MESSAGE: "taErrorMessage",
PROFILE_NAVIGATION_TRIGGER: "tkShowInput",
COMMENT_ADD: "taAddComment"
}
}(),
CLASS_DOM: function() {
return {
ENTRY: "entry cf",
ENTRY_HOVER: "entry bgY1 cf",
ENTRY_SIMPLE: "entrySimple cf",
ENTRY_SIMPLE_HOVER: "entrySimple bgY1 cf",
ENTRY_SIMPLE_INJECT: "entrySimple bgY1 bbY2 cf",
ENTRY_ADD_FRAME: "addEntry",
ENTRY_ADD_BUTTON: "inCo fs12 rb5 cp",
ADD_ICON: "icAdd",
ERROR_MESSAGE: "bgR1 bbR1 pd10 fs12 taC",
ENTRY_LIST_PROFILE: "profile",
COMMENT_ITEM: "item cf",
NAVIGATION_ACTIVE: "link add cp",
NAVIGATION: "link cp",
COMMENT_PICTURE: "picture"
}
}(),
CONSTANT: function() {
return {
MAX_CHARS: 250,
LOCK_TIME: 2000
}
}(),
TEXT: function () {
return {
ERROR_TIME: "Du kannst nicht so schnell hintereinander Tickern!",
TIMESTAMP_0 : "Vor 0 Min."
}
}(),
lock: false,
init: function () {
if (document.getElementById("taAddTextarea")) {
document.getElementById("taAddTextarea").onkeyup = function () {
Ticker.limitValue(document.getElementById("taAddTextarea"));
}
document.getElementById("taAddTextarea").focus();
}
if (document.getElementById(Ticker.ID_DOM.TEXTAREA_COMMENT_ADD)) {
document.getElementById(Ticker.ID_DOM.TEXTAREA_COMMENT_ADD).onkeyup = function () {
Ticker.limitValue(document.getElementById(Ticker.ID_DOM.TEXTAREA_COMMENT_ADD));
}
document.getElementById(Ticker.ID_DOM.TEXTAREA_COMMENT_ADD).focus();
}
if (document.getElementById(Ticker.ID_DOM.TICKER)) {
if (document.getElementById(Ticker.ID_DOM.TICKER).className == "profile" || document.getElementById(Ticker.ID_DOM.TICKER).className == "archive") {
var divBoxes = document.getElementById(Ticker.ID_DOM.TICKER).getElementsByTagName('div');
var entryList = [];
for (var i = 0, len = divBoxes.length; i < len; i++) {
if (divBoxes[i].className == Ticker.CLASS_DOM.ENTRY_SIMPLE) {
entryList.push(divBoxes[i]);
}
}
for (var i = 0, len = entryList.length; i < len; i++) {
entryList[i].onmouseover = function () {
this.className = Ticker.CLASS_DOM.ENTRY_SIMPLE_HOVER;
};
entryList[i].onmouseout = function () {
this.className = Ticker.CLASS_DOM.ENTRY_SIMPLE;
}
}
}
}
},
limitValue: function (textarea) {
var entry = textarea.value;
var balance = Ticker.CONSTANT.MAX_CHARS - entry.length;
var counterArea = document.getElementById(Ticker.ID_DOM.ENTRY_CHARSLEFT)
var counterValue = counterArea.getElementsByTagName("b")[0];
if (balance > 0) {
counterValue.innerHTML = balance;
if (entry.search(/\n|\r/) != -1) {
textarea.value = entry.replace(/\n|\r/g, "");
}
}
else {
entry.replace(/\n|\r/g, "").slice(0,Ticker.CONSTANT.MAX_CHARS);
}
},
activeEntry: undefined,
mayDeleteEntry: function (trigger, entryId, userId) {
if (this.activeEntry) this.activeEntry.style.background = "";
Jpy.remove("lyDeleteTickerEntry");
var entry = document.getElementById("taEntry"+entryId);
entry.style.background = "#e1e1e1";
this.activeEntry = entry;
var layer = Jpy.layer.add("lyDeleteTickerEntry", trigger, {x:-175,y:-50});
var box = DOM.div({className:"pd10 bgW fs12 taL bdG6"});
box.innerHTML = "Diesen Ticker-Eintrag wirklich löschen?";
layer.appendChild(box);
var actionbar = DOM.actionbar("Ja!", "Abbrechen");
actionbar.send.onclick = function () {
Ticker.deleteEntry(entryId, userId, "profile");
Jpy.remove("lyDeleteTickerEntry");
}
actionbar.abort.onclick = function () {
Jpy.remove("lyDeleteTickerEntry");
entry.style.background = "";
}
layer.appendChild(actionbar.frame);
},
deleteEntry: function(entryId, userId, mode) {
var deleteEntry = new AjaxHandler();
var callback = {
success: function(data) {
if (data != "") data = eval("("+ data+ ")");
if (!data.error || data == "") {
if (mode == "move") {
var url = window.location.href;
url.replace(/[0-9]*$/gi, "archive");
window.location.href = url;
}
else {
document.getElementById("taEntries").removeChild(document.getElementById("taEntry"+entryId));
}
}
else {
Ticker.handleError(data);
}
},
failure: function(statusCode) {
Jpy.handleAjaxError(statusCode);
}
};
deleteEntry.request('POST', "/backend/user/ticker.php?h="+User.hash, callback,
{
entryId: entryId,
userId: userId,
action: "deleteEntry"
});
},
openEntry: function(entryId) {
var username;
if (/popup/.test(window.location.href) == true) {
username = (/\/popup\/([a-z0-9\-\_]{2,16})/gi).exec(window.location.href);
if (username[1]) {
window.location = "/popup/"+username[1]+"/ticker/"+entryId;
}
}
else {
username = (/\/user\/([a-z0-9\-\_]{2,16})/gi).exec(window.location.href);
if (username[1]) {
window.location = "/user/"+username[1]+"/ticker/"+entryId;
}
}
},
add: {
showError: function (text) {
if (document.getElementById(Ticker.ID_DOM.ERROR_MESSAGE) == null) {
var frame = document.getElementById(Ticker.ID_DOM.TICKER_FRAME);
var firstEntry = document.getElementById(Ticker.ID_DOM.TICKER);
var message = text;
var errorFrame = document.createElement("div");
errorFrame.className = Ticker.CLASS_DOM.ERROR_MESSAGE;
errorFrame.id = Ticker.ID_DOM.ERROR_MESSAGE;
errorFrame.innerHTML = message;
frame.insertBefore(errorFrame, firstEntry);
}
else {
document.getElementById(Ticker.ID_DOM.ERROR_MESSAGE).innerHTML = text;
}
},
showInput: function (triggerArea, tickerEntrySetting) {
if (!this.tickerEntrySettingStatus) this.tickerEntrySettingStatus = tickerEntrySetting;
triggerArea.value = "";
triggerArea.style.color = "#585858";
triggerArea.style.height = "53px";
triggerArea.onclick = function () {return false;}
var frame = triggerArea.parentNode.parentNode;
triggerArea.id = "taAddTextarea";
var actionbar = DOM.div({className:"actionbar cf"});
var tickerSetting = DOM.span({className:"privacy"});
var textAll = "<span class='icPrivacyAll'>&nbsp;</span> An Alle";
var textBuddy = "<span class='icPrivacyBuddies'>&nbsp;</span> An Freunde";
if (this.tickerEntrySettingStatus == undefined) {
tickerSetting.innerHTML = "<span class='icPrivacyBuddies'>&nbsp;</span><i>Nur an Freunde</i>";
tickerSetting.className = "pd5";
}
else if (this.tickerEntrySettingStatus == 0) {
tickerSetting.innerHTML = textAll;
}
else {
tickerSetting.innerHTML = textBuddy;
}
if (this.tickerEntrySettingStatus != undefined) {
tickerSetting.onmouseover = function () {
Jpy.css.hoverClass(tickerSetting, "bgY1");
}
tickerSetting.onclick = function () {
if (Ticker.add.tickerEntrySettingStatus == 0) {
tickerSetting.innerHTML = textBuddy;
Ticker.add.tickerEntrySettingStatus = 1;
}
else {
tickerSetting.innerHTML = textAll;
Ticker.add.tickerEntrySettingStatus = 0;
}
}
}
actionbar.appendChild(tickerSetting);
var charsLeft = document.createElement("span");
charsLeft.id = Ticker.ID_DOM.ENTRY_CHARSLEFT;
charsLeft.style.marginRight = "15px";
charsLeft.style.marginLeft = "15px";
var remainChars = document.createElement("b");
remainChars.appendChild(document.createTextNode(Ticker.CONSTANT.MAX_CHARS))
charsLeft.appendChild(document.createTextNode("Noch "));
charsLeft.appendChild(remainChars);
charsLeft.appendChild(document.createTextNode(" Zeichen"));
actionbar.appendChild(charsLeft)
var buttonAdd = document.createElement("a");
buttonAdd.className = Ticker.CLASS_DOM.ENTRY_ADD_BUTTON;
buttonAdd.id = Ticker.ID_DOM.ENTRY_ADD_BUTTON
buttonAdd.appendChild(document.createTextNode("Ticker senden"));
actionbar.appendChild(buttonAdd)
frame.appendChild(actionbar);
document.getElementById("taAddTextarea").onkeyup = function () {
Ticker.limitValue(this);
}
MessageEditor.register("taAddTextarea", "noSmilies simpleFonts noColors noImages noQuote focus","", undefined, 390);
document.getElementById("taAddTextarea").focus();
document.getElementById(Ticker.ID_DOM.ENTRY_ADD_BUTTON).onclick = function () {
Ticker.add.send();
}
},
injectEntry: function (entryText, entryId, tickerEntrySetting) {
if (!tickerEntrySetting) tickerEntrySetting = 0;
var dateClass = "date";
if (tickerEntrySetting == 1) {
dateClass = "date friend";
}
var template = ""
+ "<div class='"+dateClass+"'><span class='ts1'>"+Ticker.TEXT.TIMESTAMP_0+"</span></div>"
+ "<div class='plain'>"+entryText+"</div>"
+ "<div class='moderation'><span onclick='Ticker.mayDeleteEntry(this, "+entryId+", "+User.id+");return false;' class='cp'><span class='icDelete'>&nbsp;</span></span></div>";
var entry = DOM.div({className:"entrySimple cf",id:"taEntry"+entryId})
entry.innerHTML = template;
if (document.getElementById("taEntries")) {
var entries = document.getElementById("taEntries");
if (entries.innerHTML == "") {
entries.appendChild(entry);
}
else {
entries.insertBefore(entry, entries.getElementsByTagName("div")[0]);
}
}
else {
var entriesFrame = document.createElement("div");
entriesFrame.id = "taEntries";
entriesFrame.appendChild(entry);
if (!document.getElementById("ta")) {
Jpy.id("tk").appendChild(DOM.div({id:"ta",className:"profile"}));
}
document.getElementById("ta").appendChild(entriesFrame);
}
document.getElementById("taAddTextarea").value = "";
document.getElementById("taAddTextarea").focus();
document.getElementById("taEntryCharsLeft").getElementsByTagName("b")[0].innerHTML = Ticker.CONSTANT.MAX_CHARS;
document.getElementById("taEntry"+entryId).className = "entrySimple bgY1 bbY2 cf";
window.setTimeout("document.getElementById(Ticker.ID_DOM.ENTRY+"+entryId+").className='entrySimple cf'", 1000)
document.getElementById(Ticker.ID_DOM.ENTRY+entryId).onmouseover = function () {
this.className = Ticker.CLASS_DOM.ENTRY_SIMPLE_HOVER;
};
document.getElementById(Ticker.ID_DOM.ENTRY+entryId).onmouseout = function () {
this.className = Ticker.CLASS_DOM.ENTRY_SIMPLE;
};
document.getElementById(Ticker.ID_DOM.ENTRY+entryId).getElementsByTagName('div')[1].onclick = function () {
Ticker.openEntry(entryId);
}
},
setLock: function () {
Ticker.lock = true;
window.setTimeout(function(){Ticker.lock=false}, Ticker.CONSTANT.LOCK_TIME);
},
setPrivacy: function (trigger) {
var textAll = "<span class='icPrivacyAll'>&nbsp;</span> An Alle";
var textBuddy = "<span class='icPrivacyBuddies'>&nbsp;</span> An Freunde";
if (Ticker.add.tickerEntrySettingStatus == undefined) Ticker.add.tickerEntrySettingStatus = TickerPrivacyStatus;
if (Ticker.add.tickerEntrySettingStatus == 0) {
trigger.innerHTML = textBuddy;
Ticker.add.tickerEntrySettingStatus = 1;
}
else {
trigger.innerHTML = textAll;
Ticker.add.tickerEntrySettingStatus = 0
}
},
send: function () {
if (Ticker.lock != true && document.getElementById("taAddTextarea").value.length > 0) {
var tickerEntrySetting = Ticker.add.tickerEntrySettingStatus;
$.post(
"/backend/user/ticker.php?h=" + User.hash,
{
text: document.getElementById("taAddTextarea").value,
tickerEntrySetting: tickerEntrySetting,
action: "addEntry"
},
function(data) {
var data = eval("("+ data+ ")");
if (!data.error) {
Ticker.add.injectEntry(data.entryText,data.entryId,tickerEntrySetting);
Ticker.add.setLock();
if (document.getElementById(Ticker.ID_DOM.ERROR_MESSAGE) != null) {
document.getElementById(Ticker.ID_DOM.TICKER_FRAME).removeChild(document.getElementById(Ticker.ID_DOM.ERROR_MESSAGE))
}
}
else {
Ticker.add.showError(data.error);
}
}
);
}
else {
Ticker.add.showError(Ticker.TEXT.ERROR_TIME);
}
}
},
comments: {
add: function(entryId, userId) {
if (Ticker.lock != true && document.getElementById(Ticker.ID_DOM.TEXTAREA_COMMENT_ADD).value.length > 0) {
$.post(
"/backend/user/ticker.php",
{
entryId: entryId,
userId: userId,
text: document.getElementById(Ticker.ID_DOM.TEXTAREA_COMMENT_ADD).value,
action: "addComment"
},
function(data) {
var data = eval("("+ data+ ")");
if (!data["error"]) {
Ticker.comments.inject(data);
document.getElementById(Ticker.ID_DOM.TEXTAREA_COMMENT_ADD).value = "";
document.getElementById(Ticker.ID_DOM.TEXTAREA_COMMENT_ADD).focus();
Ticker.add.setLock();
if (document.getElementById(Ticker.ID_DOM.ERROR_MESSAGE)) {
document.getElementById(Ticker.ID_DOM.TICKER_FRAME).removeChild(document.getElementById(Ticker.ID_DOM.ERROR_MESSAGE))
}
}
else {
Ticker.add.showError(data.error);
}
}
);
}
else {
Ticker.add.showError(Ticker.TEXT.ERROR_TIME);
}
},
inject: function (data) {
var comment = document.createElement("div");
comment.className = Ticker.CLASS_DOM.COMMENT_ITEM;
var picture = document.createElement("div");
picture.className = Ticker.CLASS_DOM.COMMENT_PICTURE;
var userPicture = document.getElementById(Ticker.ID_DOM.COMMENT_ADD).getElementsByTagName("img")[0];
picture.innerHTML = "<img src=\'"+userPicture.src+"\'>";
comment.appendChild(picture);
comment.innerHTML += data;
var frame = document.getElementById(Ticker.ID_DOM.TICKER);
frame.insertBefore(comment, frame.getElementsByTagName("div")[4])
}
},
deleteComment: function(entryId, userId, authorId, anotherId, hash, element) {
$.post(
"/backend/user/ticker.php?h="+ hash,
{
entryId: entryId,
userId: userId,
authorId: authorId,
anotherId: anotherId,
action: "deleteComment"
},
function(data) {
if (data != "") {
var data = eval("("+ data+ ")");
}
if (!data.error) {
var elementParent = element.parentNode.parentNode.parentNode;
document.getElementById(Ticker.ID_DOM.TICKER).removeChild(elementParent);
}
else {
Ticker.handleError(data.error);
}
}
);
},
updateLatestTickerEntries: function(numberOfEntriesPerPage, startIndex){
$.post(
"/backend/user/tickerAbo.php",
{
numberOfEntriesPerPage: numberOfEntriesPerPage,
startIndex: startIndex,
action: "updateLatestTickerEntries"
},
function(data) {
if(data != -1) {
document.getElementById("spBoxContent101").innerHTML = data;
}
}
);
},
handleError: function(error) {
SystemMessage.inline.success(error.error);
}
}
Ticker.init();
// Wed Jul 28 18:06:30 2010