﻿/*
Script: Length.js
	Length - A Mootools length checker.

License:
	MIT-style license.

Copyright:
	Copyright (c) 2008 [Ross Merrigan](http://www.rossmerrigan.com/).
*/

var Length = new Class({

    Implements: [Options],

	options: {
	    type:       'span',         // Element type to create for the validation message
	    message:    ' van 300 tekens',
	    className:      'lengthMessage' // The class name to add to the message element
	},

	initialize: function(element, length, options){
		this.el = $(element);
		this.length = (length).toInt();
        this.count = this.length;

		if ($chk(this.el)) {
		    this.el.set('maxlength', this.length);
		    this.elid = element;
		    this.setOptions(options);
		    this.parent = this.el.getParent();

		    this.messageType = new Element(this.options.type).inject(this.parent).addClass(this.options.className);

		    this.check();
		    this.el.addEvents({'keyup': this.check.bindWithEvent(this)});
	    }
	},

	check: function(object) {
	    this.count= (this.getTextToCheck().length);

	    this.messageType.empty();
        this.messageType.appendText((this.count) + this.options.message);
        if ((this.length - this.count) < 0) {
            this.strip();
        }
        else if((this.length - this.count) == 0){
        	this.messageType.setProperty('class', 'red '+ this.options.className);
        }
        else {
        	this.messageType.removeClass().setProperty('class', this.options.className);
        }
	},

	getTextToCheck: function() {
	    if (this.el.get('tag') == 'input') {
	        return this.el.get('value').replace(/\n/g, "");
	    } else if (this.el.get('tag') == 'textarea') {
	        return this.el.get('value').replace(/\n/g, "");
	    } else {
	        return this.el.get('text').replace(/\n/g, "");
	    }
	},

	strip: function() {
	    var string = this.getTextToCheck().substring(0, this.length);
        this.el.set('value', string);
        this.check();

	}
});
