(function($){
    $.fn.validator = function(options) {
        var defaults = {
			
        };
  
        var options = $.extend(defaults, options);
    
        function ajaxValidate(input_element, obj){

            var name = input_element.attr('name');
            var value = input_element.val();
            var dd_id = "#" + name + "-element";

//            console.log(input_element);

            $.post(
                options.validation_url,
                {
                    element_name: name,
                    element_value: value
                },
                function (data) 
                {
                    $(dd_id + " ul.errors", obj).remove();
							
                    if (data.response == "OK")
                    {
                        input_element.removeClass('invalid');
                        input_element.addClass('valid');
                    }
                    else
                    {
                        input_element.removeClass('valid');
                        input_element.addClass('invalid');
                        $(dd_id, obj).append("<ul class='errors'></ul>");
                        for (errormessage in data.response)
                        {
                            var key = errormessage.toString();
                            $(dd_id + " ul.errors", obj).append("<li>" + data.response[key] + "</li>");
                        }
                    }
                },
                "json"
                );
        }

        return this.each(function() {
            obj = $(this);
			
            var current_value = "";
            var validation_url = options.validation_url;
			
            $("input", obj).focus(function () {
                current_value = $(this).val();
            });

            obj.submit(function () {
//                alert('submit');
//                return false;
            });

            $("input[type!='checkbox'][type!='radio']", obj).blur(function () {
                var input_element = $(this);
                if (current_value != input_element.val()) {
                    ajaxValidate(input_element, obj);
                }
            });

            $("input[type='radio']", obj).change(function () {
                var input_element = $(this);
                ajaxValidate(input_element, obj);
            });
            
            $("input[type='checkbox']", obj).change(function () {
                // true / false wordt niet goed herkend door zend_form
                var input_element = $(this);                
                result = (input_element.attr('checked'))?1:0; 
                input_element.attr('value', result);
                
                ajaxValidate(input_element, obj);
            });
			
        });
    };
})(jQuery);


