

(function($){

	 $.fn.extend({

        //This is where you write your plugin's name
        wdforms: function(options) {

            //Iterate over the current set of matched elements
            return this.each(function() {
				//Assign current element to variable, in this case is UL element
                var obj = $(this);

				$(this).submit(function() {
					$ok = true;
					$("input[required='required']", obj).each(function() {
						if (!validate(this)) {
							style(this);
							$ok = false;
						}
					});
					if (options['password']['pass'] && options['password']['repeat']) {
						if(!validate_passwords()){
							style_passwords();
							$ok = false;
						}
					}
					return $ok;
				});

				//console.log(options['password']['pass']);
				
				
				$("input[required='required']", obj).addClass('required').keyup(function(){
					if ($(this).val() != '') style(this);
				}).focusout(function(){
					style(this);
				});

				$('input', obj).focus(function(){
					$(this).addClass('selected');
				});

				$('input', obj).focusout(function(){
					$(this).removeClass('selected');
				});

				if (options['password']['pass'] && options['password']['repeat']) {
					$('#'+options['password']['repeat']).focusout(function(){
						style_passwords();
					});
					$('#'+options['password']['pass']).focusout(function(){
						style_passwords();
					});
				}
				
				function style_passwords(){
					if (!validate_passwords()) {
						$('#'+options['password']['repeat']).removeClass('ok').addClass('notok');
					}
					else {
						style($('#'+options['password']['repeat']));
					}
				}

				function validate_passwords(){
						//console.log($('#'+options['password']['pass']).val());
					if ($('#'+options['password']['pass']).val() != $('#'+options['password']['repeat']).val()) {
						return false;
					}
					else {
						return true;
					}
				}

				function validate_all(obj) {
					$("input[required='required']", obj).validate(this);
					
					return false;
				}

				function style(obj) {
					if (validate(obj)) $(obj).removeClass('notok').addClass('ok');
					else $(obj).removeClass('ok').addClass('notok');
				}

				function validate(obj) {
					$val = $(obj).val();
					//console.log($(obj).attr("id"));
					if ($val != '') {
						if ($(obj).attr("pattern")) {
							//console.log('pat');

							var $pattern_string;

							$pattern_string = "^" + $(obj).attr("pattern") + "$";
							//console.log($pattern_string);

							$pattern = new RegExp($pattern_string);

							if ($pattern.test($val)) return true;
							else return false;
						}
						else {
							return true;
						}
					}
					else {
						return false;
					}
				}

            });
        }
    });

})(jQuery);
