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());
        }
});

Reply via email to