var FormHandler = Class.create({

    // options
    option : {
        form: null
    },

    initialize : function(options) {

        // setup options
        this.options = options;
        this.analyseForm();
        $(this.options.form).find('div.entry div.select select').each(function() {
            $(this).selectbox();
        });
    },
    
    analyseForm: function () {
        var rules = {};
        //var messages = {};
        $(this.options.form).find('div.entry').each(function(){
            if ($(this).find('div.checkbox').length == 0 && $(this).find('div.select').length == 0 ) {
            	var inputHolder = $(this).find('div.input');
                var elm = $(this).find('input, textarea');
                rules[elm.attr('name')] = {
                    required: $(this).hasClass('required'),
                    email: inputHolder.hasClass('email'),
                    digits: inputHolder.hasClass('number'),
                    notags: true,
                    minlength: 1
                }
                /*messages[elm.attr('name')] = {
                    required: ($(this).hasClass('required')) ? 'Dit is een verplicht veld' : '',
                    email: 'Vul een geldig emailadres in.',
                    digits: 'Dit veld mag alleen nummers bevatten.',		
                    notags: 'Er mogen geen tags gebruikt worden.',
                    minlength: 'Vul minimaal 2 karakters in.'
                }*/
            } else if($(this).find('div.checkbox').length > 0) {
                var inputHolder = $(this).find('div.checkbox');
                var elm = $(this).find('input');
                rules[elm.attr('name')] = {
                    required: inputHolder.hasClass('required')
                }
            }
        });
        
        $(this.options.form).validate({
            rules: rules,
            //messages: messages,
            errorPlacement: function(error, element) {
                var obj = element.parents('.input, .checkbox').next('div.icon');
    			error.insertAfter(obj);
    			obj.attr('class','icon invalid');
            },
            success: function(label) {
            	label.prev('div.icon').attr('class','icon valid');
                label.remove();
            },
            submitHandler: function(form) {
                form.trigger('submit');
            }
        });	
    }
});
