if (!Friends) {
var Friends = {};
}
if (!FriendList) {
var FriendList = null;
}
Friends.active = {
length: 0
}
Friends.lists = {
}
Friends.get = {
load: function (callbackFunc) {
var getFriends = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
Friends.active = new DataStorage(data.ok);
Friends.active.sortBy("stamp.nickname");
Friends.get.prepare();
if (callbackFunc) callbackFunc();
}
};
var parameter = {
userId: User.id,
action: "getFriendsActive"
};
getFriends.request('POST', "/backend/friend/friendList.php?h="+User.hash, callback, parameter);
},
prepare: function () {
var friendLists = Friends.friendLists;
for (var n in friendLists) {
Friends.lists[friendLists[n].id] = {}
Friends.lists[friendLists[n].id] = friendLists[n];
}
var friends = Friends.active.data;
for (var m in friends) {
var friend = friends[m];
var lists = [];
if (friend.friendListIds != null) {
if (/\,/.test(friend.friendListIds) == false) {
lists = [friend.friendListIds];
}
else {
lists = friend.friendListIds.split(",");
}
friend.friendListIds = lists;
for (var i = 0, len = friend.friendListIds.length; i < len; i++) {
Friends.lists[friend.friendListIds[i]][friend.id] = friend;
}
}
}
}
}
var Friend = {
details: function (trigger, userId, layerId, friendData) {
var frame = null;
if (layerId != undefined) {
frame = Jpy.layer.list[layerId].box;
frame.innerHTML = "";
}
if (frame == null) {
var layer = new Jpy.layerDragable.get({
trigger: trigger,
offset: {x:-500,y:-100},
width: "600px",
reference: userId
})
layer.frame.innerHTML = "<div class='taC bgG4 pd15'><img src='"+Jpy.picurl+"/i/ge/loading.gif' class='vaMid' alt='Jappy'> Freund wird geladen ....</div>";
this.load(trigger, userId, layer.layer.id);
}
else {
var friend = friendData.friend;
var picture = DOM.div({className:"picture",child:Jpy.getUserImage(friend.stamp.profileImage)})
var nickname = DOM.div({className:"ldN",child:Userstamp.get(friend.stamp)})
var realname = DOM.div({className:"realname"});
if (friend.realName) {
var quote = "";
var numberOfVotings = friend.realName.ratingPostive + friend.realName.ratingNegative;
if (numberOfVotings > 2) {
quote = (friend.realName.ratingPostive/numberOfVotings)*100+"%";
}
var votings = DOM.div({className:"quote",text:quote});
realname.appendChild(DOM.span({className:"rn",child:[DOM.text(friend.realName.firstname+" "+friend.realName.surname),votings]}))
}
var listOfLists = new this.layout.listOfLists(friend, layerId);
var profile = DOM.div({className:"plain",child:[nickname,realname,listOfLists.frame]})
var header = DOM.div({className:"head cf",child:[picture,profile]})
frame.appendChild(header);
if (friend.realName) {
if (friendData.realNameRated == false) {
var voteRealname = DOM.div({className:"voteRealname"})
var questionVote = DOM.div({text:"<b>Ist das "+friend.realName.firstname+" "+friend.realName.surname+"?</b><br><br>"})
var voteTop = DOM.button("Ja", "a", "inBu1 first", "icVoteTop");
voteTop.onclick = (function (vote, userId, frame) {
return function () {
Friend.voteRealname(vote, userId, frame);
return false;
}
})(1 ,friendData.friend.stamp.userId, voteRealname);
var voteNeutral = DOM.button("Keine Ahnung", "a", "inBu1", "icVoteNeutral");
voteNeutral.onclick = (function (vote, userId, frame) {
return function () {
Friend.voteRealname(vote, userId, frame);
return false;
}
})("0" ,friendData.friend.stamp.userId, voteRealname);
var voteFlop = DOM.button("Nein", "a", "inBu1 last", "icVoteFlop");
voteFlop.onclick = (function (vote, userId, frame) {
return function () {
Friend.voteRealname(vote, userId, frame);
return false;
}
})("-1" ,friendData.friend.stamp.userId, voteRealname);
voteRealname.appendChild(questionVote)
voteRealname.appendChild(voteTop)
voteRealname.appendChild(voteNeutral)
voteRealname.appendChild(voteFlop)
frame.appendChild(voteRealname);
}
}
if (friend.publicCommentOnYou != null) {
var publicCommentOnYou = new this.layout.publicCommentOnYou(friend);
frame.appendChild(publicCommentOnYou.frame);
}
var publicComment = new this.layout.publicComment(friend);
var privateComment = new this.layout.privateComment(friend);
frame.appendChild(publicComment.frame);
frame.appendChild(privateComment.frame);
var showOnlineLine = new this.layout.settingsLine(friend, friend.settings.onlineList, "onlineList", "In Onlineliste anzeigen:")
var flogInfoLine = new this.layout.settingsLine(friend, friend.settings.flogInfo, "flogInfo", "Flogs anzeigen:")
var flogInfoSuggest = new this.layout.settingsLine(friend, friend.settings.flogRecipient, "flogRecipient", "Bei Flogs vorschlagen:")
var cancelFriendshopButton = DOM.link({
href:"/friends/"+friend.stamp.userId+"/delete?h="+User.hash,className:"coB3",child:"Beenden"
})
cancelFriendshopButton.onclick = (function (trigger, nickname, link) {
return function () {
if (document.getElementById("bsCancelFriendship")) {
Jpy.layer.remove("bsCancelFriendship");
return false;
}
else {
var cancelLayer = new Jpy.layerDragable.get({
id: "bsCancelFriendship",
trigger: trigger,
mother: layerId,
offset: {x:-50,y:-30},
width: "400px",
title: "Freund schaft mit "+nickname+" beenden?"
});
var actionbar = DOM.actionbar("Beenden", "Abbrechen");
actionbar.send.onclick = function () {
location.href = link;
}
actionbar.abort.onclick = function () {
Jpy.layer.remove("bsCancelFriendship");
return false;
}
cancelLayer.frame.appendChild(actionbar.frame);
}
return false;
}
})(cancelFriendshopButton, friend.stamp.nickname, cancelFriendshopButton.href)
var cancelFriendship = DOM.div({className:"settings cf",child:[
DOM.div({className:"topic",child:"Freundschaft beenden"}),
DOM.div({className:"switch",child:cancelFriendshopButton})
]})
var settings = DOM.div({className:"line cf",child:[
DOM.div({className:"title",child:"Weiteres"}),
DOM.div({className:"plain",child:[
showOnlineLine.frame,
flogInfoLine.frame,
flogInfoSuggest.frame,
cancelFriendship
]})
]})
frame.appendChild(settings);
var close = DOM.span({className:"inCo",child:"Schließen"})
close.onclick = function () {
Jpy.layer.remove(layerId);
}
var actionbar = DOM.div({
className:"abG1 fwB taR",
child:close
})
frame.appendChild(actionbar)
frame.className = "editFriend";
}
},
voteRealname: function (rating, userId, frame) {
var saveRating = new AjaxHandler();
frame.innerHTML = "<img src='"+Jpy.picurl+"/i/ge/loading.gif' class='vaMid'> Bitte warten ...";
var callback = {
json: true,
success: function(data) {
if (data.ok) {
frame.innerHTML = "<span class='icOk'>&nbsp;</span>Bewertung gespeichert!"
}
}
}
var parameter = {
rating: rating,
userId: userId,
action: "rateRealName"
}
saveRating.request('POST', "/backend/friend/friendList.php?h="+User.hash, callback, parameter);
},
loadFriendLists: function (trigger, friend, motherId, frame) {
var load = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if (data.ok) {
Friends.friendLists = data.ok;
Friend.showFriendLists(trigger, friend, motherId, frame);
}
}
}
var parameter = {
action: "getFriendLists"
}
load.request('POST', "/backend/friend/friendList.php?h="+User.hash, callback, parameter);
},
getNotUsedLists: function (source, entries) {
var lists = [];
if (entries != null) {
for (var n in source) {
if (entries[source[n].id] == undefined) {
lists.push(source[n]);
}
}
}
return lists;
},
showFriendLists: function (trigger, friend, motherId, frame) {
if (Friends.friendLists == undefined) {
Friend.loadFriendLists(trigger, friend, motherId, frame);
}
else if (Friends.active.length == 0) {
Friends.get.load(function(){Friend.showFriendLists(trigger, friend, motherId, frame)});
}
else {
if (document.getElementById("bsSuggestLists")) {
Jpy.layer.remove("bsSuggestLists");
}
else {
var layer = new Jpy.layer.get({
id: "bsSuggestLists",
trigger: trigger,
offset: {x:1,y:22},
mother: motherId
});
var box = DOM.div({className:"ddW"});
var friendList = friend.friendLists;
var lists = Friend.getNotUsedLists(Friends.friendLists, friendList);
if (Jpy.getLength(lists) > 0) {
for (var n in lists) {
if (!lists[n].name) continue;
var entry = DOM.link({className:"cp",child:lists[n].name});
entry.onclick = (function (friend, lists, additional, frame, motherId) {
return function () {
var listIds = [];
if (lists == null || lists.length == 0) {
listIds = [additional.id]
}
else {
for (var j in lists) {
if (lists[j].id) listIds.push(lists[j].id);
}
listIds.push(additional.id);
}
additional.numberOfUsers++;
lists[additional.id] = additional
friend.lists = friendList;
var layout = new Friend.layout.listOfLists(friend, motherId);
frame.parentNode.appendChild(layout.frame);
Jpy.remove(frame);
Jpy.layer.remove("bsSuggestLists");
Friends.lists[additional.id][friend.stamp.userId] = Friends.active.data[friend.stamp.userId];
if (FriendList != null) {
FriendList.updateLists();
}
Friend.saveFriendLists(friend.stamp.userId, listIds);
return false;
}
})(friend, friendList, lists[n], frame, motherId)
box.appendChild(entry)
}
}
else {
box.innerHTML = "<div class='pd10 fwI'>Keine Listen gefunden!</div>";
}
layer.frame.appendChild(box);
}
}
},
showFriendListOptions: function (friendList, friend, trigger, motherId) {
if (document.getElementById("bsFriendListOptions")) {
Jpy.layer.remove("bsFriendListOptions");
}
else {
var layer = new Jpy.layer.get({
id: "bsFriendListOptions",
trigger: trigger,
offset: {x:1,y:22},
mother: motherId
});
var details = DOM.link({className:"cp",text:"<span class='icFwd'>&nbsp;</span>Liste öffnen"});
details.onclick = function () {
if (FriendList != undefined) {
Jpy.layer.remove(motherId);
FriendList.showList(friendList.id);
}
else {
location.href = "/friends/list/"+friendList.id;
}
}
var remove = DOM.link({className:"cp",text:"<span class='icXWhite'>&nbsp;</span>Aus Liste entfernen"});
remove.onclick = function () {
Friend.removeFriendList(friendList, friend, trigger);
return false;
}
var box = DOM.div({className:"ddW",child:[details,remove]});
layer.frame.appendChild(box);
}
},
removeFriendList: function (friendList, friend, trigger) {
trigger.innerHTML = "<img src='"+Jpy.picurl+"/i/ge/loading.gif' class='vaMid' alt='Jappy'> Wird gespeichert ....";
delete friend.friendLists[friendList.id];
var listIds = [];
for (var n in friend.friendLists) {
listIds.push(friend.friendLists[n].id);
}
Jpy.layer.remove("bsFriendListOptions");
Friend.saveFriendLists(friend.stamp.userId, listIds, function () {Jpy.remove(trigger)});
if (FriendList != undefined) {
delete Friends.lists[friendList.id][friend.stamp.userId];
Friends.lists[friendList.id].numberOfUsers--;
FriendList.updateLists();
}
},
saveFriendLists: function (userId, listIds, callbackFunc) {
var saveFriendLists = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if (data.ok) {
if (callbackFunc) callbackFunc();
}
}
}
var parameter = {
userId: userId,
action: "setFriendLists",
listIds: listIds
}
saveFriendLists.request('POST', "/backend/friend/friendList.php?h="+User.hash, callback, parameter);
},
toggleSetting: {
loading: false,
load: function (friendData, span, type, setting) {
if (this.loading == true) return;
this.loading = true;
if (setting == 1) {
setting = 0;
}
else if (setting == 0) {
setting = 1;
}
var settings = friendData.settings;
settings[type] = setting;
span.innerHTML = "<img src='"+Jpy.picurl+"/i/ge/loading.gif' class='vaMid' alt='Jappy'>";
var load = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
span.onclick = function () {
Friend.toggleSetting.load(friendData, span, type, setting);
}
if (setting == 1) {
span.className = "swOn";
span.innerHTML = "Ja";
}
else {
span.className = "swOff";
span.innerHTML = "Nein";
}
Friend.toggleSetting.loading = false;
}
}
var parameter = {
userId: friendData.stamp.userId,
action: "setFriendSettings",
"friendSettings[onlineList]": settings.onlineList,
"friendSettings[flogInfo]": settings.flogInfo,
"friendSettings[flogRecipient]": settings.flogRecipient
}
load.request('POST', "/backend/friend/friendList.php?h="+User.hash, callback, parameter);
}
},
layout: {
settingsLine: function(friendData, setting, type, text) {
var title = DOM.div({className:"topic",child:text});
var status = DOM.span({className:"swOff",child:"Nein"});
if (setting == 1) {
status.className = "swOn";
status.innerHTML = "Ja";
}
status.onclick = (function (friendData, span, type, setting) {
return function () {
Friend.toggleSetting.load(friendData, span, type, setting);
}
})(friendData, status, type, setting);
var plain = DOM.div({className:"switch",child:status});
this.frame = DOM.div({className:"settings cf",child:[title,plain]});
},
listOfFriendsIcon: function(list, friend, motherId) {
this.frame = DOM.span({className:"friendlist",text:"<b>"+list.numberOfUsers+"</b>"+list.name});
this.frame.onmouseover = (function (frame) {
return function () {
Jpy.css.hoverClass(frame, "hover");
Jpy.layer.remove("bsFriendListOptions");
}
})(this.frame);
this.frame.onclick = (function (friendList, friend, frame, motherId) {
return function () {
Friend.showFriendListOptions(friendList, friend, frame, motherId);
}
})(list, friend, this.frame, motherId);
},
listOfLists: function(friend, motherId) {
this.plain = DOM.fragment();
var friendLists = friend.friendLists;
if (friendLists.length == 0) {
this.plain.innerHTML = "<i>In keinen Listen</i>";
}
else {
for (var n in friendLists) {
if (friendLists[n].id) {
var list = new Friend.layout.listOfFriendsIcon(friendLists[n], friend, motherId);
this.plain.appendChild(list.frame);
}
}
}
var add = DOM.button("Liste", "span", "inDpW cp fs11", "icAddWhite");
this.plain.appendChild(add);
this.frame = DOM.div({className:"lists",child:[this.plain]});
add.onclick = (function (trigger, friend, motherId, frame) {
return function () {
Friend.showFriendLists(trigger, friend, motherId, frame);
}
})(add, friend, motherId, this.frame);
},
publicCommentOnYou: function (friendData) {
var title = DOM.div({className:"title"});
var onYou = DOM.div({className:"bgY1 bdG6 pd10",style:"width:350px",child:"<b>"+friendData.stamp.nickname+" denkt über dich:</b><br>"+friendData.publicCommentOnYou});
var plain = DOM.div({className:"plain",child:[onYou]});
this.frame = DOM.div({className:"line cf",child:[title,plain]});
},
publicComment: function (friendData) {
var title = DOM.div({className:"title",child:"Öffentl. Meinung"});
var value;
if (friendData.publicComment == null) {
value = "Hier öffentliche Meinung über "+friendData.stamp.nickname+" schreiben ...";
}
else {
value = friendData.publicComment;
}
var textarea = DOM.textarea({className:"teG3",value:value})
if (friendData.publicComment == null) {
textarea.style.color = "#666666";
textarea.onclick = function() {
textarea.value = "";
textarea.style.color = "";
textarea.onclick = function () {return};
}
}
var plain = DOM.div({className:"plain",child:textarea});
var save = DOM.span({className:"inCo",child:"<span class='icOk'>&nbsp;</span> Speichern"})
var edit = DOM.div({className:"edit",child:save});
this.frame = DOM.div({className:"line cf",child:[title,plain,edit]});
save.onclick = (function (textarea) {
return function () {
var loading = DOM.div({className:"pd10 fs12",child:"<img src='"+Jpy.picurl+"/i/ge/loading.gif' class='vaMid' alt='Jappy'> Wird gespeichert ...."})
textarea.parentNode.insertBefore(loading, textarea);
Jpy.hide(textarea);
var saveLine = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if (data.ok) {
Jpy.remove(loading);
textarea.value = data.ok.publicComment;
Jpy.show(textarea);
var line = textarea.parentNode.parentNode;
line.style.background = "#e2fa97";
window.setTimeout(function(){line.style.background = "#f1f1f1"}, 300)
}
}
}
var parameter = {
publicComment: textarea.value,
userId: friendData.stamp.userId,
action: "setPublicComment"
}
saveLine.request('POST', "/backend/friend/friendList.php?h="+User.hash, callback, parameter);
}
})(textarea);
},
privateComment: function (friendData) {
var title = DOM.div({className:"title",child:"Private Notiz"});
var value;
if (friendData.privateComment == null) {
value = "Hier private Notiz über "+friendData.stamp.nickname+" schreiben...";
}
else {
value = friendData.privateComment;
}
var textarea = DOM.textarea({className:"teG3",value:value})
if (friendData.privateComment == null) {
textarea.style.color = "#666666";
textarea.onclick = function() {
textarea.value = "";
textarea.style.color = "";
textarea.onclick = function () {return};
}
}
var plain = DOM.div({className:"plain",child:textarea});
var save = DOM.span({className:"inCo",child:"<span class='icOk'>&nbsp;</span> Speichern"})
var edit = DOM.div({className:"edit",child:save});
this.frame = DOM.div({className:"line cf",child:[title,plain,edit]});
save.onclick = (function (textarea) {
return function () {
var loading = DOM.div({className:"pd10 fs12",child:"<img src='"+Jpy.picurl+"/i/ge/loading.gif' class='vaMid' alt='Jappy'> Wird gespeichert ...."})
textarea.parentNode.insertBefore(loading, textarea);
Jpy.hide(textarea);
var saveLine = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if (data.ok) {
Jpy.remove(loading);
textarea.value = data.ok.privateComment;
Jpy.show(textarea);
var line = textarea.parentNode.parentNode;
line.style.background = "#e2fa97";
window.setTimeout(function(){line.style.background = "#f1f1f1"}, 300)
}
}
}
var parameter = {
privateComment: textarea.value,
userId: friendData.stamp.userId,
action: "setPrivateComment"
}
saveLine.request('POST', "/backend/friend/friendList.php?h="+User.hash, callback, parameter);
}
})(textarea)
}
},
load: function(trigger, userId, layerId) {
var loadUser = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
Friend.details(trigger, userId, layerId, data.ok);
}
};
var parameter = {
userId: userId,
action: "getFriendDetails"
};
loadUser.request('POST', "/backend/friend/friendList.php?h="+User.hash, callback, parameter);
},
withdrawOffer: function(userId) {
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
SystemMessage.inline.error("Die Anfrage konnte nicht zurückgezogen werden.");
}
else if(data.ok) {
Jpy.layer.remove("lyConfirm");
if(Jpy.id("offer"+userId)) Jpy.remove("offer"+userId);
SystemMessage.inline.success("Die Anfrage wurde zurückgezogen.");
}
}
};
var parameter = {
userId: userId,
action: "withdraw"
};
xhr.request('POST', "/backend/friend/friendship.php?h="+User.hash, callback, parameter);
},
acceptOffer: function(userId) {
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
if(data == -5) {
SystemMessage.inline.error("Der User existiert nicht (mehr).");
if(Jpy.id("offer"+userId)) Jpy.remove("offer"+userId);
}
else if(data == -6) {
SystemMessage.inline.error("Die Freundschaft besteht bereits.");
if(Jpy.id("offer"+userId)) Jpy.remove("offer"+userId);
}
else if(data == -7) {
SystemMessage.inline.error("Du kannst dir nicht selbst die Freundschaft anbieten.");
}
else if(data == -8) {
SystemMessage.inline.error("Du kannst keine weiteren Freunde aufnehmen.");
}
else if(data == -9) {
SystemMessage.inline.error("Die Anfrage wurde vom Ersteller zurückgezogen.");
if(Jpy.id("offer"+userId)) Jpy.remove("offer"+userId);
}
else {
SystemMessage.inline.error("Die Freundschaft konnte nicht geschlossen werden.");
}
return;
}
else if(data.ok) {
Jpy.layer.remove("lyConfirm");
if(Jpy.id("offer"+userId)) Jpy.remove("offer"+userId);
Friend.details(Jpy.id("bs"), userId);
SystemMessage.inline.success("Freundschaft wurde geschlossen");
}
}
};
var parameter = {
userId: userId,
action: "accept"
};
xhr.request('POST', "/backend/friend/friendship.php?h="+User.hash, callback, parameter);
},
declineOffer: function(userId) {
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
SystemMessage.inline.error("Der Antrag konnte nicht abgelehnt werden.");
}
else if(data.ok) {
Jpy.layer.remove("lyConfirm");
if(Jpy.id("offer"+userId)) Jpy.remove("offer"+userId);
SystemMessage.inline.success("Freundschaftsanfrage wurde abgelehnt.");
}
}
};
var parameter = {
userId: userId,
action: "decline"
};
xhr.request('POST', "/backend/friend/friendship.php?h="+User.hash, callback, parameter);
}
}
Friend.selector = (function() {
var inviteNonFriends = false;
var friends = [];
var friendLists = [];
var nonFriends = [];
var usersConcerned = [];
var participants = [];
if(Jpy.getApp() < 0) {
usersConcerned.indexOf = function(needle) {return Friend.selector.in_array(this, needle)};
}
var abortFunction = null;
var confirmFunction = null;
var frame = null;
var searchResults = null;
var section = null;
FRIENDLIST_ID = 1;
FRIEND_ID = 2;
USER_ID = 3;
function show(trigger, title, submitTitle) {
frame = new Jpy.layerDragable.get({
trigger: trigger,
offset: {x:0,y:-25},
width: "400px",
title: title
})
frame.frame.className = "friendSelector";
if(abortFunction != null) {
frame.close.onclick = abortFunction;
}
else {
frame.close.onclick = function () {
frame.layer.remove();
frame = null;
return false;
}
}
var selector = DOM.div({className:"icDdG1 fl",id:"fsFriendListSelector",style:{marginTop:"5px",marginLeft:"5px"}});
frame.search = DOM.input({type:"text",className:"ipW1",style:{width:"330px",height:"20px",marginTop:"5px"}});
selector.onclick = (function(trigger, mother) {
return function() {
displayFriendLists(trigger, mother);
return false;
}
})(selector, frame.layer);
frame.search.onclick = function() {
if(frame.friendList) {
Jpy.id(frame.friendList.id).style.display = "none";
}
return false;
}
frame.search.onkeydown = function(event) {
return blockSubmit(event);
};
frame.search.onkeyup = (function(trigger, mother) {
return function(event) {
watchKeyCodes(event, trigger, mother);
}
})(frame.search, frame.layer);
frame.search.onblur = function () {
}
frame.frame.appendChild(DOM.div({
className: "search cf",
child:[
DOM.div({
className: "pd10",
child: [
selector,
frame.search
]
})
]
}));
var info = DOM.div({className:"bgY1 pd10 fs12",text:"<span class='icHelp' style='margin-left:10px'>&nbsp;</span> Gibt in die Suchmaske Listen- oder Nutzernamen ein."})
frame.receivers = DOM.div({
className:"receivers",
child: info
});
frame.frame.appendChild(frame.receivers);
var actionbar = DOM.actionbar(submitTitle, "Abbrechen");
if(confirmFunction != null) {
actionbar.send.onclick = confirmFunction;
}
else {
actionbar.send.onclick = function () {
frame.layer.remove();
return false;
}
}
if(abortFunction != null) {
actionbar.abort.onclick = abortFunction;
}
else {
actionbar.abort.onclick = function () {
frame.layer.remove();
frame = null;
return false;
}
}
frame.frame.appendChild(actionbar.frame);
if(section == 1) {
var friendIds = Jpy.id("friendIds")
clearUsersConcerned();
if(friendIds && friendIds.value != "") {
var users = friendIds.value.split(",");
for(var i = users.length; i--; ) {
var userId = users[i];
if(!isFinite(userId) || !friends[userId]) continue;
injectUser(friends[userId]);
}
}
}
else if(section == 3) {
clearUsersConcerned();
var numberOfParticipants = participants.length;
for(var i = numberOfParticipants; i--; ) {
var userId = participants[i];
if(!isFinite(userId)) continue;
if(friends[userId]) {
injectUser(friends[userId]);
}
else if(nonFriends[userId]) {
injectUser(nonFriends[userId]);
}
}
}
else if(section == 4 || section == 2) {
clearUsersConcerned();
var numberOfParticipants = participants.length;
for(var i = numberOfParticipants; i--; ) {
var userId = participants[i];
debug(userId);
if(!isFinite(userId)) continue;
if(friends[userId]) {
injectUser(friends[userId]);
}
}
}
frame.search.focus();
}
function blockSubmit(e) {
var key = Jpy.getKeycode(e).keyCode;
if (key == 13 || key == 38 || key == 40 || key == 27 || key == 9) {
return false;
}
}
function watchKeyCodes(e, trigger, mother) {
var key = Jpy.getKeycode(e).keyCode;
if (key == 40 || key == 9) {
navigateDown();
return false;
}
else if (key == 38) {
navigateUp();
return false;
}
else if (key == 27) {
closeSearchResult();
return false;
}
else if (key == 13) {
navigateSelect();
}
else {
search(trigger, mother);
}
}
function closeSearchResult() {
frame.searchResult.remove();
}
function navigateUp() {
if(!searchResults) return;
if(!isFinite(searchResults.position)) {
searchResults.position = 0;
}
else if((searchResults.position) > 0) {
if(searchResults.elements[searchResults.position]) Jpy.css.removeClass(searchResults.elements[searchResults.position], "active");
searchResults.position--;
}
Jpy.css.addClass(searchResults.elements[searchResults.position], "active");
}
function navigateDown() {
if(!searchResults) return;
if(!isFinite(searchResults.position)) {
searchResults.position = 0;
}
else if((searchResults.position+1) < searchResults.numberOfResults) {
if(searchResults.elements[searchResults.position]) Jpy.css.removeClass(searchResults.elements[searchResults.position], "active");
searchResults.position++;
}
Jpy.css.addClass(searchResults.elements[searchResults.position], "active");
}
function navigateSelect() {
if(!searchResults) return;
if(!isFinite(searchResults.position)) return;
var entry = searchResults.results[searchResults.position];
if(entry.userId) {
var id = entry.userId;
var type = FRIEND_ID;
}
else if(entry.id) {
var id = entry.id;
var type = FRIENDLIST_ID;
}
addEntry(id,type);
frame.search.value = "";
if(Jpy.id(frame.searchResult.id)) {
frame.searchResult.remove();
}
delete frame.searchResult;
searchResult = null;
}
function displayFriendLists(trigger, mother) {
if (Jpy.id("fsFriendLists")) {
Jpy.layer.remove("fsFriendLists");
return;
}
var layer = new Jpy.layer.get({
trigger: trigger,
id: "fsFriendLists",
instructions: {
className: "searchSuggest",
style: {
width:"250px"
}
},
mother: mother.id,
offset: {x:1,y:23}
})
for (var n in friendLists) {
var friendList = friendLists[n];
if(!friendList.id) continue;
var numberOfUserAdded = friendList.numberOfUsers-getNumberOfUsersAvailable(friendList.id, friendList.numberOfUsers)
var usersAdded = DOM.span({className:"coE1",style:{marginLeft:"5px"}});
if (numberOfUserAdded > 0) {
usersAdded.innerHTML = numberOfUserAdded+" <span class='icOkWhite'>&nbsp;</span>";
}
var entry = DOM.div({
className:"entry suggest cf",
child:[
DOM.div({
className: "picture",
style: {
width:"30px"
},
child: "<span class='icFld'>&nbsp;</span>"
}),
DOM.div({
className: "plain",
child: [
"<span class='coG2'>("+friendList.numberOfUsers+")</span> <b>"+friendList.name+"</b>",
usersAdded
]
}),
DOM.div({
className: "options",
child: "<span class='icAddWhite'>&nbsp;</span>"
})
]
});
entry.onclick = (function(id) {
return function () {
addEntry(id, FRIENDLIST_ID);
frame.search.value = "";
Jpy.layer.remove("fsFriendLists");
return false;
}
})(friendList.id)
layer.frame.appendChild(entry);
}
frame.friendList = layer;
}
function addEntry(id, type) {
if(type == FRIEND_ID) {
if(!friends[id] || usersConcerned.indexOf(id) > -1) {
return;
}
if(friends[id].flogDisabled && friends[id].flogDisabled == 1) return;
injectUser(friends[id]);
}
else if(type == FRIENDLIST_ID) {
if(!friendLists[id]) {
return;
}
var friendList = friendLists[id];
for(var i = friendList.memberIds.length; i--; ){
var memberId = friendList.memberIds[i];
if(!friends[memberId] || usersConcerned.indexOf(memberId) > -1) {
continue;
}
if(friends[memberId].flogDisabled && friends[memberId].flogDisabled == 1) continue;
injectUser(friends[memberId]);
}
}
else if(type == USER_ID) {
if(!nonFriends[id] || usersConcerned.indexOf(id) > -1) {
return;
}
injectUser(nonFriends[id]);
}
}
function removeUser(trigger, userId) {
var position = usersConcerned.indexOf(userId);
if (position == -1) {
return;
}
usersConcerned.splice(position, 1);
Jpy.remove(trigger.parentNode);
}
function injectUser(user) {
if(!user.stamp) return;
usersConcerned.push(user.stamp.userId);
var removeIcon = DOM.span({className:"icXWhite cp",child:"&nbsp;"});
var removeLink = DOM.div({
className:"options",
child:removeIcon,
title: "Von Empfängerliste entfernen..."
});
removeLink.onclick = (function(trigger, userId) {
return function() {
removeUser(trigger, userId);
return false;
}
})(removeLink, user.stamp.userId);
var userstamp = Jpy.getUserImage(user.stamp.profileImage, 30);
var realName = "";
if(user.realName) {
realName = user.realName.firstname + " " + user.realName.surname;
}
var entry = DOM.div({
className:"entry user cf",
child:[
DOM.div({
className: "picture",
child: userstamp
}),
DOM.div({
className: "plain",
child: [
Userstamp.read(user.stamp, "noLink"),
DOM.div({className:"rn",child:realName})
]
}),
removeLink
]
});
entry.onmouseover = (function (entry) {
return function () {
entry.className = "entry user hover cf";
entry.onmouseout = function () {
entry.className = "entry user cf";
}
}
})(entry)
if(frame.receivers.children && frame.receivers.children.length > 0) {
frame.receivers.insertBefore(entry, frame.receivers.firstChild);
}
else {
frame.receivers.appendChild(entry);
}
}
function search(trigger, mother) {
var searchInput = new String(trigger.value);
var resultsBuddy = [];
var resultsFriendList = [];
var results = [];
if (searchInput.length == 0) {
}
else if (searchInput.length <= 3) {
var searchStringStart = new RegExp("^"+searchInput, "i");
var lists = friendLists;
for (var n in lists) {
var title = lists[n].name;
if ((searchStringStart).test(title) == true) {
results.push(lists[n])
}
}
var buddies = friends;
for (var n2 in buddies) {
var nick = buddies[n2].stamp.nickname;
if ((searchStringStart).test(nick) == true) {
results.push(buddies[n2])
}
else if(buddies[n2].realName) {
var realName = buddies[n2].realName.firstname + " " + buddies[n2].realName.surname;
if ((searchStringStart).test(realName) == true) {
results.push(buddies[n2])
}
}
}
}
else {
var searchStringGlobal = new RegExp(searchInput, "i");
var listsGlobal = friendLists;
for (var n3 in listsGlobal) {
var titleGlobal = listsGlobal[n3].name;
if ((searchStringGlobal).test(titleGlobal) == true) {
results.push(listsGlobal[n3])
}
}
var buddiesGlobal = friends;
for (var n4 in buddiesGlobal) {
var nickGlobal = buddiesGlobal[n4].stamp.nickname;
if ((searchStringGlobal).test(nickGlobal) == true) {
results.push(buddiesGlobal[n4])
}
else if(buddiesGlobal[n4].realName) {
var realName = buddiesGlobal[n4].realName.firstname + " " + buddiesGlobal[n4].realName.surname;
if ((searchStringGlobal).test(realName) == true) {
results.push(buddiesGlobal[n4])
}
}
}
if(inviteNonFriends == true) {
var search = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if (!data.ok) {
return;
}
if (typeof(data.ok) === "object") {
for (var n in data.ok) {
var user = data.ok[n];
user.source = "search";
var userId = user.userId;
nonFriends[userId] = user;
if(userId == User.id || friends[userId] || usersConcerned.indexOf(userId) != -1) continue;
results.push(user);
}
}
var sortedResults = sortResultsByName(results);
showSearchResults(trigger, mother, sortedResults);
}
};
var parameters = {
action : "search",
search : searchInput,
section : section
};
search.request('POST', "/backend/friend/friendSelector.php?h="+User.hash, callback, parameters);
}
}
var sortedResults = sortResultsByName(results);
showSearchResults(trigger, mother, sortedResults);
}
function sortResultsByName(results) {
var ids = [];
var name = [];
if (!results) {
return [];
}
for (var n in results) {
if(results[n].source && results[n].source == "search") {
debug(results[n]);
name.push("9-"+results[n].stamp.nickname)
ids.push(results[n].stamp.userId)
}
else if(results[n].stamp) {
name.push("8-"+results[n].stamp.nickname)
ids.push(results[n].stamp.userId)
}
else {
name.push("7-"+results[n].name)
ids.push(results[n].id)
}
}
var seperation = "||#||";
var sortArray = [];
for (var i = 0, len = name.length; i < len; i++) {
name[i] = name[i].toLowerCase();
}
for (var i1 = 0, len1 = name.length; i1 < len1; i1++ ) {
sortArray[i1] = name[i1]+seperation+ids[i1];
}
sortArray.sort();
var nameSorted = [];
var idSorted = [];
for (var i2 = 0, len2 = sortArray.length; i2 < len2; i2++ ) {
var sortedTable = sortArray[i2].split(seperation);
nameSorted.push(sortedTable[0].substr(2));
idSorted.push(sortedTable[1]);
}
var sortedResultList = [];
for (var i3 = 0, len3 = idSorted.length; i3 < len3; i3++) {
for (var n3 in results) {
if(results[n3].stamp) {
if (idSorted[i3] == results[n3].stamp.userId) {
sortedResultList.push(results[n3]);
}
}
else {
if (idSorted[i3] == results[n3].id) {
sortedResultList.push(results[n3]);
}
}
}
}
return sortedResultList;
}
function showSearchResults(trigger, mother, sortedResults) {
var numberOfResults = sortedResults.length;
if(frame.searchResult && numberOfResults == 0) {
if(Jpy.id(frame.searchResult.id)) {
frame.searchResult.remove();
}
delete frame.searchResult;
return;
}
else if (!frame.searchResult) {
var layer = new Jpy.layer.get({
trigger: trigger,
id: "fsSearchResult",
instructions: {
className: "searchSuggest",
style: {
width:"250px"
}
},
mother: mother.id,
offset: {x:1,y:23}
})
frame.searchResult = layer;
}
var results = frame.searchResult.frame;
if(!searchResults) searchResults = [];
searchResults.results = sortedResults;
searchResults.elements = [];
searchResults.numberOfResults = numberOfResults;
searchResults.position = -1;
results.innerHTML = "";
for (var i = 0; i < numberOfResults; i++) {
var result = sortedResults[i];
if(result.stamp) {
var realName = "";
if(result.realName) {
realName = result.realName.firstname + " " + result.realName.surname;
}
if(result.flogDisabled && result.flogDisabled == 1) {
var entry = DOM.div({
className:"entry suggest cf bgR1",
child:[
DOM.div({
className: "picture",
child: Jpy.getUserImage(result.stamp.profileImage, 30)
}),
DOM.div({
className: "plain",
child: [
Userstamp.read(result.stamp, "noLink"),
DOM.div({className:"rn",text:realName})
]
})
]
});
}
else if(usersConcerned.indexOf(result.userId) == -1 && !result.source) {
var entry = DOM.div({
className:"entry suggest cf",
child:[
DOM.div({
className: "picture",
child: Jpy.getUserImage(result.stamp.profileImage, 30)
}),
DOM.div({
className: "plain",
child: [
Userstamp.read(result.stamp, "noLink"),
DOM.div({className:"rn",text:realName})
]
}),
DOM.div({
className: "options",
child: "<span class='icAddWhite'>&nbsp;</span>"
})
]
});
entry.onclick = (function(id) {
return function () {
addEntry(id, FRIEND_ID);
frame.search.value = "";
if(Jpy.id(frame.searchResult.id)) {
frame.searchResult.remove();
}
delete frame.searchResult;
searchResult = null;
return false;
}
})(result.userId)
}
else if(usersConcerned.indexOf(result.userId) == -1 && result.source && result.source == "search") {
var entry = DOM.div({
className:"entry suggest cf",
child:[
DOM.div({
className: "picture",
child: Jpy.getUserImage(result.stamp.profileImage, 30)
}),
DOM.div({
className: "plain",
child: [
Userstamp.read(result.stamp, "noLink"),
DOM.div({className:"rn",text:realName})
]
}),
DOM.div({
className: "options",
child: "<span class='icAddWhite'>&nbsp;</span>"
})
]
});
entry.onclick = (function(id) {
return function () {
addEntry(id, USER_ID);
frame.search.value = "";
if(Jpy.id(frame.searchResult.id)) {
frame.searchResult.remove();
}
delete frame.searchResult;
searchResult = null;
return false;
}
})(result.userId)
}
else {
var entry = DOM.div({
className:"entry suggest cf bgG1",
child:[
DOM.div({
className: "picture",
child: Jpy.getUserImage(result.stamp.profileImage, 30)
}),
DOM.div({
className: "plain",
child: [
Userstamp.read(result.stamp, "noLink"),
DOM.div({className:"rn",text:realName})
]
}),
DOM.div({
className: "options",
child: "<span class='icOkWhite'>&nbsp;</span>"
})
]
});
}
}
else {
var numberOfUserAdded = result.numberOfUsers-getNumberOfUsersAvailable(result.id, result.numberOfUsers)
var usersAdded = DOM.span({className:"coE1",style:{marginLeft:"5px"}});
if (numberOfUserAdded > 0) {
usersAdded.innerHTML = numberOfUserAdded+" <span class='icOkWhite'>&nbsp;</span>";
}
var entry = DOM.div({
className:"entry suggest cf",
child:[
DOM.div({
className: "picture",
child: "<span class='icFld'>&nbsp;</span>"
}),
DOM.div({
className: "plain",
child: [
"<span class='coG2'>("+result.numberOfUsers+")</span> <b>"+result.name+"</b>",
usersAdded
]
}),
DOM.div({
className: "options",
child: "<span class='icAddWhite'>&nbsp;</span>"
})
]
});
entry.onclick = (function(id) {
return function () {
addEntry(id, FRIENDLIST_ID);
frame.search.value = "";
if(Jpy.id(frame.searchResult.id)) {
frame.searchResult.remove();
}
delete frame.searchResult;
searchResult = null;
return false;
}
})(result.id)
}
entry.onmouseover = (function(entry) {
return function() {
Jpy.css.hoverClass(entry, "bgY1");
}
})(entry);
searchResults.elements.push(entry);
results.appendChild(entry);
}
}
function getNumberOfUsersAvailable(listId, numberOfUsers) {
if(!friendLists[listId]) return 0;
var list = friendLists[listId];
if(!list.memberIds) return 0;
if(numberOfUsers == 0) return 0;
var count = 0;
for(var i = numberOfUsers; i--; ) {
var userId = list.memberIds[i];
if(usersConcerned.indexOf(userId) != -1) {
continue;
}
if(!friends[userId]) {
continue;
}
if(friends[userId].flogDisabled && friends[userId].flogDisabled == 1) {
continue;
}
count++;
}
return count;
}
function debug(text, level) {
if(!Friend.selector.debug) return;
try {
}
catch(ex) {}
}
function clearUsersConcerned() {
usersConcerned = [];
if(Jpy.getApp() < 0) {
usersConcerned.indexOf = function(needle) {return Friend.selector.in_array(this, needle)};
}
}
function alterGalleryWhitelistParticipants(albumId) {
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
if(data == -3) {
SystemMessage.inline.error("Das Album existiert nicht (mehr).");
return;
}
else if(data == -4) {
SystemMessage.inline.error("Du bist nicht der Besitzer dieses Albums.");
return;
}
else if(data == -5) {
SystemMessage.inline.error("Zu diesem Album können keine Nutzer ausgewählt werden.");
return;
}
else if(data == -6) {
SystemMessage.inline.error("Die Einstellungen müssen beim übergeordnetem Album vorgenommen werden.");
return;
}
SystemMessage.inline.error("Die Daten konnten nicht gespeichert werden.");
return;
}
if(!data.ok) {
SystemMessage.inline.error("Es ist ein Fehler aufgetreten.");
return;
}
SystemMessage.inline.success("Die ausgewählten Nutzer haben nun Zugriff auf dieses Album.");
frame.layer.remove();
clearUsersConcerned();
frame = null;
}
};
var receivers = "";
for(var i = usersConcerned.length; i--; ) {
receivers += usersConcerned[i];
if(i>0) {
receivers += ",";
}
}
var parameter = {
section: section,
action: "set",
albumId: albumId,
inviteeIds: receivers
};
xhr.request('POST', "/backend/friend/friendSelector.php?h="+User.hash, callback, parameter);
}
function alterGallerySharedInvitations(albumId) {
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
if(data == -3) {
SystemMessage.inline.error("Das Album existiert nicht (mehr).");
return;
}
else if(data == -4) {
SystemMessage.inline.error("Du bist nicht der Besitzer dieses Albums.");
return;
}
else if(data == -5) {
SystemMessage.inline.error("Zu diesem Album können keine Nutzer ausgewählt werden.");
return;
}
else if(data == -6) {
SystemMessage.inline.error("Die Einstellungen müssen beim übergeordnetem Album vorgenommen werden.");
return;
}
SystemMessage.inline.error("Die Daten konnten nicht gespeichert werden.");
return;
}
if(!data.ok) {
SystemMessage.inline.error("Es ist ein Fehler aufgetreten.");
return;
}
SystemMessage.inline.success("Die ausgewählten Freunde haben die Einladung erhalten.");
frame.layer.remove();
clearUsersConcerned();
frame = null;
}
};
if(Jpy.getApp() < 0) {
participants.indexOf = function(needle) {return Friend.selector.in_array(this, needle)};
}
var inviteUserIds = "";
for(var i = usersConcerned.length; i--; ) {
if(participants.indexOf(usersConcerned[i]) == -1) {
inviteUserIds += usersConcerned[i] + ",";
}
}
var unInviteUserIds = "";
for(var i = participants.length; i--; ) {
if(usersConcerned.indexOf(participants[i]) == -1) {
unInviteUserIds += participants[i] + ",";
}
}
var parameter = {
section: section,
action: "set",
albumId: albumId,
inviteUserIds: inviteUserIds,
unInviteUserIds: unInviteUserIds
};
xhr.request('POST', "/backend/friend/friendSelector.php?h="+User.hash, callback, parameter);
}
function alterAppointmentGroupInvitees(appointmentId, toGroup) {
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
if(data == -3) {
SystemMessage.inline.error("Der Termin existiert nicht (mehr).");
return;
}
SystemMessage.inline.error("Die Daten konnten nicht gespeichert werden.");
return;
}
SystemMessage.inline.success("Die ausgewählten Freunde haben die Einladung erhalten.");
frame.layer.remove();
clearUsersConcerned();
frame = null;
if(toGroup == "yes") {
location.href = "/almanac/group/"+appointmentId;
}
}
};
var inviteUserIds = "";
for(var i = usersConcerned.length; i--; ) {
inviteUserIds += usersConcerned[i] + ",";
}
var parameter = {
section: section,
action: "set",
appointmentId: appointmentId,
inviteeIds: inviteUserIds
};
xhr.request('POST', "/backend/friend/friendSelector.php?h="+User.hash, callback, parameter);
}
return {
debug: false,
flog: function(trigger) {
if(frame != null) {
if(section != 1) {
frame.layer.remove();
frame = null;
}
else {
show(trigger, "Freunde zum Flog hinzufügen", "Hinzufügen");
return;
}
}
section = 1;
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
SystemMessage.inline.error("Die Daten konnten nicht geladen werden.");
return;
}
if(!data.ok) {
SystemMessage.inline.error("Unvollständige Daten empfangen.");
return;
}
friends = data.ok.friends;
friendLists = data.ok.friendLists;
abortFunction = function() {
frame.layer.remove();
clearUsersConcerned();
frame = null;
return false;
}
confirmFunction = function() {
if(Jpy.id("ivInvitedCountList")) {
Jpy.id("ivInvitedCountList").innerHTML = usersConcerned.length+" Empfänger";
}
if(Jpy.id("friendIds")) {
var receivers = "";
for(var i = usersConcerned.length; i--; ) {
receivers += usersConcerned[i];
if(i>0) {
receivers += ",";
}
}
Jpy.id("friendIds").value = receivers;
}
frame.layer.remove();
clearUsersConcerned();
frame = null;
return false;
}
show(trigger, "Freunde zum Flog hinzufügen", "Hinzufügen");
}
};
var parameter = {
section: section,
action: "get"
};
xhr.request('POST', "/backend/friend/friendSelector.php?h="+User.hash, callback, parameter);
},
almanacGroup: function(trigger, appointmentId, toGroup) {
toGroup = toGroup ? "yes" : false;
if(frame != null) {
if(section != 2) {
frame.layer.remove();
frame = null;
}
else {
show(trigger, "Teilnehmerliste bearbeiten", "Speichern");
return;
}
}
section = 2;
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
SystemMessage.inline.error("Die Daten konnten nicht geladen werden.");
return;
}
if(!data.ok) {
SystemMessage.inline.error("Unvollständige Daten empfangen.");
return;
}
friends = data.ok.friends;
friendLists = data.ok.friendLists;
participants = data.ok.invitees;
appointmentId = data.ok.appointmentId;
abortFunction = function() {
frame.layer.remove();
clearUsersConcerned();
frame = null;
return false;
}
confirmFunction = function() {
alterAppointmentGroupInvitees(appointmentId, toGroup);
return false;
}
show(trigger, "Teilnehmerliste bearbeiten", "Speichern");
}
};
var parameter = {
section: section,
action: "get",
appointmentId: appointmentId,
toGroup: toGroup
};
xhr.request('POST', "/backend/friend/friendSelector.php?h="+User.hash, callback, parameter);
},
galleryWhitelist: function(trigger, albumId) {
if(frame != null) {
if(section != 3) {
frame.layer.remove();
frame = null;
}
else {
show(trigger, "Nutzer Zugriff gewähren", "Speichern");
return;
}
}
section = 3;
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
SystemMessage.inline.error("Die Daten konnten nicht geladen werden.");
return;
}
if(!data.ok) {
SystemMessage.inline.error("Unvollständige Daten empfangen.");
return;
}
friends = data.ok.friends;
friendLists = data.ok.friendLists;
participants = data.ok.participants;
nonFriends = data.ok.nonFriends;
inviteNonFriends = true;
abortFunction = function() {
frame.layer.remove();
clearUsersConcerned();
frame = null;
return false;
}
confirmFunction = function() {
alterGalleryWhitelistParticipants(albumId);
return false;
}
show(trigger, "Nutzer Zugriff gewähren", "Speichern");
}
};
var parameter = {
section: section,
action: "get",
albumId: albumId
};
xhr.request('POST', "/backend/friend/friendSelector.php?h="+User.hash, callback, parameter);
},
galleryShared: function(trigger, albumId) {
if(frame != null) {
if(section != 4) {
frame.layer.remove();
frame = null;
}
else {
show(trigger, "Freunde einladen", "Einladungen versenden");
return;
}
}
section = 4;
var xhr = new AjaxHandler();
var callback = {
json: true,
success: function(data) {
if(data < 0) {
SystemMessage.inline.error("Die Daten konnten nicht geladen werden.");
return;
}
if(!data.ok) {
SystemMessage.inline.error("Unvollständige Daten empfangen.");
return;
}
friends = data.ok.friends;
friendLists = data.ok.friendLists;
participants = data.ok.participants;
abortFunction = function() {
frame.layer.remove();
clearUsersConcerned();
frame = null;
return false;
}
confirmFunction = function() {
alterGallerySharedInvitations(albumId);
return false;
}
show(trigger, "Freunde einladen", "Einladungen versenden");
}
};
var parameter = {
section: section,
action: "get",
albumId: albumId
};
xhr.request('POST', "/backend/friend/friendSelector.php?h="+User.hash, callback, parameter);
},
in_array: function(array, needle) {
var numberOfElements = array.length;
for(var i = numberOfElements; i--; ) {
if(array[i] == needle) {
return i;
}
}
return -1;
}
}
})()
// Wed Jan  5 15:28:01 2011
