var TextCounter = new Class({

	options: {
		countBox: 'tc_countbox',
		countNum: 'tc_count',
		maxChar: 1000,
		limitChars: true
	},

	initialize: function(el){
		var dis = this;
		this.input = $(el);

		if(this.input.getProperty('alt')){
			var options = Json.evaluate(this.input.getProperty('alt'));
		}else{
			var options = {};
		}
		this.setOptions(options);

		// create the box for the text
		this.countbox = new Element('p', {'class':this.options.countBox}).setHTML(' / ' + this.options.maxChar + ' characters').injectAfter(this.input);
		this.counter = new Element('span', {'class':this.options.countNum}).injectTop(this.countbox);
		this.input.addEvent('keyup', this.count.bind(this));
		this.count();
	},

	count: function() {
		var num = this.input.value.length;
		// cut off extra text
		if (this.options.limitChars && (num > this.options.maxChar) ) {
			this.input.value = this.input.value.substring(0, this.options.maxChar);
			num = this.options.maxChar;
		}
		// write the count
		this.counter.setText(num);
	}

});

TextCounter.implement(new Options);