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 flagged = $(this.name + 'flagme' + id);
		var req = new Request({
			method: 'get',
			url: this.folder + 'backend.php',
			onSuccess: function(text, xml) {
				flagged.set('html', 'flagged');
			}
		}).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.setStyle('opacity', 0).set('html', updown[0]).fade('in');
				if (down != null)
					down.setStyle('opacity', 0).set('html', updown[1]).fade('in');
				if (updown != null)
					upndown.setStyle('opacity', 0).set('html', updown[2]).fade('in');
			}
		}).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').setStyle('opacity', 0).set('html', '').fade('in');
				if (mid == null)
					$(name + 'form').setStyle('opacity', 0).set('html', text).fade('in');
				else
					$(name + 'form' + mid).setStyle('opacity', 0).set('html', text).fade('in');
			}
		}).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,
					'styles': {
						'opacity': 0
					}
				}).inject($(object), 'after').fade('in');
				$(object).destroy();
			}
		}).send('objid=' + this.name + '&do=comments&id=' + this.id + '&pid=' + id + this.cacheDefeat());
	}
});

function counterUpdate(opt_countedTextBox, opt_countBody, opt_maxSize) {
        var countedTextBox = opt_countedTextBox ? opt_countedTextBox : "counttxt";
        var countBody = opt_countBody ? opt_countBody : "countBody";
        var maxSize = opt_maxSize ? opt_maxSize : 1000;

        var field = document.getElementById(countedTextBox);

        if (field && field.value.length >= maxSize) {
                field.value = field.value.substring(0, maxSize);
        }
        var txtField = document.getElementById(countBody);
                if (txtField) { 
                txtField.innerHTML = maxSize - field.value.length;
        }
}