Runs on v1.2 and above but has a memory leak that I can't find.
var Comments = new Class({
id: 0,
page: 0,
object: null,
name: null,
parentid: 0,
folder: './',
initialize: function(id, object, name, folder){
// Setup
this.id = id;
this.object = object;
this.name = name;
this.folder = folder;
// Get the comments for this page
this.getComments(this.page);
},
flag: function(id) {
var req = new Request({
method: 'get',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
}
}).send('do=flag&id=' + id + this.cacheDefeat());
},
openFlagged: function(obj, id) {
var obj = obj;
var req = new Request({
method: 'get',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
new Element('div', {'html': text}).inject(obj,
'after');
obj.destroy();
}
}).send('do=getcomment&post=' + id + '&id=' + this.id +
this.cacheDefeat());
},
cacheDefeat: function() {
var myDate = new Date();
return '&r=' + myDate.getTime();
},
checkTitle: function() {
var form = $(this.name +
'form').getChildren('div')[0].getChildren
('form')[0].each(function (ele) {
if (ele.name == 'title' && ele.value == 'Title Here') {
ele.set('value', '');
}
});
},
clearText: function(object) {
if (object.name == 'title' || object.name == 'message') {
if (object.value == 'Title Here' || object.value ==
'Message Here')
{
object.value = '';
}
}
},
setReply: function(id) {
this.parentid = id;
},
thumbsUp: function(id) {
var a = this;
var req = new Request({
method: 'get',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
a.updateThumbs(id);
}
}).send('do=thumbs&id=' + id + '&up=true' + this.cacheDefeat());
},
thumbsDown: function(id) {
var a = this;
var req = new Request({
method: 'get',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
if (text == "done")
a.updateThumbs(id);
}
}).send('do=thumbs&id=' + id + '&up=false' +
this.cacheDefeat());
},
updateThumbs: function(messageid) {
var up = $(this.name + 'up' + messageid);
var down = $(this.name + 'down' + messageid);
var upndown = $(this.name + 'updown' + messageid);
var req = new Request({
method: 'get',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
var updown = text.split(";");
if (up != null)
up.set('html', updown[0]);
if (down != null)
down.set('html', updown[1]);
if (updown != null)
upndown.set('html', updown[2]);
}
}).send('do=getthumbs&id=' + messageid + this.cacheDefeat());
},
respond: function() {
var a = this;
var toReplace = $$("div." + this.name + "forms")[0];
var req = new Request({
method: 'post',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
if (text == "") {
a.getComments(a.page);
} else {
form.getChildren('div')[0].setStyle('display', 'block');
form.getChildren('div')[0].set('html',
text);
}
a.insertReply();
}
}).send('do=write&id=' + this.id + '&parentid=' + this.parentid
+
'&message=' + $(this.name + "formsmessage").value.replace(/&/g,"%26")+
'&title=' + $(this.name + "formstitle").value.replace(/&/g,"%26") +
this.cacheDefeat());
},
insertReply: function(mid) {
var name = this.name;
var mid = mid;
this.parentid = mid;
var req = new Request({
method: 'get',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
$$("div." + name + "forms").each(function (ele)
{
ele.set('html', '');
});
$(name + 'form').set('html', '');
if (mid == null)
$(name + 'form').set('html', text);
else
$(name + 'form' + mid).set('html',
text);
}
}).send('objid=' + name + '&do=getform&id=' + this.id +
this.cacheDefeat());
},
getComments: function(page) {
this.page = page;
var object = this.object;
var req = new Request({
method: 'get',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
object.set('html', text);
}
}).send('objid=' + this.name + '&do=read&thumbs=' + $(this.name
+
"sel").value + '&id=' + this.id + '&page=' + this.page +
this.cacheDefeat());
},
showComments: function(id, object) {
var req = new Request({
method: 'get',
url: this.folder + 'backend.php',
onSuccess: function(text, xml) {
new Element('div', {
'html': text
}).inject($(object), 'after');
$(object).destroy();
}
}).send('objid=' + this.name + '&do=comments&id=' + this.id +
'&pid=' + id + this.cacheDefeat());
}
});