(function($){
    $.fn.pnv = function(options){
        var error = function($this){
            $this.css('border-color','red');
        }
        var success = function($this){
            $this.css('border-color','green');
        }
        function validateEmail($e) {
            var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            return re.test($e);   
        }
        function validatePhone($p) { 
            var re =  /^(?:\+?[0-9]?[0-9]?[0-9][-. ]?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
            return re.test($p);
        }
        var opts = $.extend({
            error: error,
            success: success,
            email: "email",
            phone: "phone",
            }, options );
      
        $(this).children('fieldset').find('input:not(.pnvSkip, .next, .back),select:not(.pnvSkip ,.next ,.back)').bind('keyup change blur',function(){
            normVal($(this));  
        });
        $(this).children('fieldset').find('.next').bind('click',function(){
            $(this).parents('fieldset').find('input:not(.pnvSkip, .next, .back),select:not(.pnvSkip ,.next ,.back)').each(function(){
                var a = '[name='+$(this).attr('name')+']';
                a = $(a); 
                normVal(a);
            });
        });
        function normVal($this){
            getName = $this.attr('name');
            console.log(getName);
            $this.css('border','2px solid');
            if(getName == opts.email && !validateEmail($this.val())){
                opts.error($this);
            }else if(getName == opts.phone && !validatePhone($this.val())){
                opts.error($this);
            }else if($this.val() == '' || $this.val() == $this.attr('placeholder')){
                opts.error($this);
            }else{
                opts.success($this);
            }  
        }
    }
})(jQuery);

@@ -37,24 +37,50 @@
 n(options)%7B%0A
+    var shallWeGo = true;%0A
         var 
@@ -731,28 +731,16 @@
 extend(%7B
-%0A           
  error: 
@@ -745,28 +745,16 @@
 : error,
-%0A           
  success
@@ -763,28 +763,16 @@
 success,
-%0A           
  email: 
@@ -779,28 +779,16 @@
 %22email%22,
-%0A           
  phone: 
@@ -795,29 +795,43 @@
 %22phone%22,
-%0A            
+ calls: %22keyup change blur%22
 %7D, optio
@@ -966,27 +966,18 @@
 ind(
-'keyup change blur'
+opts.calls
 ,fun
@@ -1109,32 +1109,41 @@
 ()%7B%0A            
+runInput(
 $(this).parents(
@@ -1145,32 +1145,102 @@
 ents('fieldset')
+);%0A        %7D);%0A        function runInput($this)%7B%0A                $this
 .find('input:not
@@ -1397,45 +1397,295 @@
     
-a = $(a); %0A                normVal(a)
+normVal($(a));%0A                if(shallWeGo == false)%7B%0A                    return false;%0A                %7D%0A            %7D); %0A        %7D%0A        $('.next:last').click(function()%7B%0A            runInput($(this).parents('form'));%0A            if(shallWeGo == false)%7B%0A                return false
 ;%0A  
@@ -1687,34 +1687,32 @@
 e;%0A            %7D
-);
 %0A        %7D);%0A   
@@ -1787,42 +1787,8 @@
 ');%0A
-            console.log(getName);%0A
     
@@ -1925,32 +1925,67 @@
 s.error($this);%0A
+                shallWeGo = false;%0A
             %7Dels
@@ -2071,32 +2071,67 @@
 s.error($this);%0A
+                shallWeGo = false;%0A
             %7Dels
@@ -2226,32 +2226,67 @@
 s.error($this);%0A
+                shallWeGo = false;%0A
             %7Dels
@@ -2317,32 +2317,66 @@
 success($this);%0A
+                shallWeGo = true;%0A
             %7D  %0A

Update pnv.js