﻿(function($){
    
    $.fn.formtest = function(elclickbutton,validationgroup) {
		var prevel = null;
		var settings = {
		  'validationgroup': 'formulier',
		  'dynamic': true
		};
		$(elclickbutton).click(function(){$.fn.formtest.completeform()});
		$.fn.formtest.initialize();
	}

	$.fn.formtest.initialize = function() {
	    if (typeof(Page_Validators) == "undefined") {
			return false;
	    }
		validationGroup = "";
		if(!validationGroup || validationGroup == "") {
			validationGroup = "formulier";
		}
		var prevField = null;
		var prevValid = true;
		for (i = 0;i < Page_Validators.length; i++)
		{
			if(eval(Page_Validators[i].id).validationGroup.toString() != validationGroup){
				continue;
			}
			ValidatorValidate(Page_Validators[i], eval(Page_Validators[i].id).validationGroup.toString(), null);
			if((eval(Page_Validators[i].id).isvalid) && (eval(Page_Validators[i].id).controltovalidate.toString() != prevField)) {
				$.fn.formtest.correct($("#" + eval(Page_Validators[i].id).controltovalidate.toString()));
			}
			if (prevField != eval(Page_Validators[i].id).controltovalidate.toString())
			{
				
			  el = $("#" + eval(Page_Validators[i].id).controltovalidate.toString());
			  $(el).blur(function(){$.fn.formtest.fieldtest(this);});
			  $(el).focus(function(){$.fn.formtest.currenterror(this);});
			  if($(el).closest(".regel").find(".status .notice .notice_inner").html())
			  {
				  if($(el).closest(".regel").find(".status .notice .notice_inner").html().length > 25)
				  {
					  $(el).closest(".regel").removeClass("message").addClass("message");
				  }
			  }
			}
			if(i < Page_Validators.length)
			{
				prevField = eval(Page_Validators[i].id).controltovalidate.toString();
				prevValid = eval(Page_Validators[i].id).isvalid;
			}
		}
	}
    $.fn.formtest.incorrect = function(el,tekst,popup){
        $(el).unbind("focus");
        $(el).focus(function(){$.fn.formtest.fieldtest(this);});
		$(el).unbind("keyup");
		$(el).bind("keyup",function(){$.fn.formtest.fieldtest(this);});
		if(popup)
		{
			$(el).closest(".regel").find(".status .notice .notice_inner .error").html(tekst);
		}
		$(el).closest(".regel").removeClass("currenterror").removeClass("correct").removeClass("incorrect").addClass("incorrect").addClass("currenterror");
		if($(el).val() != '')
		{
			$(el).closest(".regel").removeClass("ingevuld").addClass("ingevuld");
		}else
		{
			$(el).closest(".regel").removeClass("ingevuld");
		}
	}
	$.fn.formtest.correct = function(el) 
    {
		$(el).closest(".regel").removeClass("currenterror").removeClass("correct").removeClass("incorrect").addClass("correct");
		if($(el).val() != '')
		{
			$(el).closest(".regel").removeClass("ingevuld").addClass("ingevuld");
		}else
		{
			$(el).closest(".regel").removeClass("ingevuld");
		}
	}
	$.fn.formtest.currenterror = function(el) 
	{
		$(el).closest(".regel .message").removeClass("currentmessage").addClass("currentmessage");

		if(el != $.fn.formtest.prevel)
		{
			$($.fn.formtest.prevel).closest(".regel").removeClass("currenterror").removeClass("currentmessage");
			$.fn.formtest.prevel = el;
		}
	}
	$.fn.formtest.fieldtest = function(el){
	  
		var melding = '';
		var fieldi = -1;
		for (i = 0; i < Page_Validators.length; i++){
			if(eval(Page_Validators[i].id).controltovalidate.toString() == el.id){
				ValidatorValidate(Page_Validators[i], eval(Page_Validators[i].id).validationGroup.toString(), null);
				if(!eval(Page_Validators[i].id).isvalid){
				  melding += eval(Page_Validators[i].id).errormessage.toString().replace(' *','') + "<br />";
				}
				fieldi = i;
			}else if(fieldi >= 0){
			   break; 
			}
		}
		if(fieldi >= 0){
			$.fn.formtest.currenterror($("#" + eval(Page_Validators[fieldi].id).controltovalidate.toString()));
			if(melding != ''){
				$.fn.formtest.incorrect($("#" + eval(Page_Validators[fieldi].id).controltovalidate.toString()),melding,true);
				return false;
			}else{
				$.fn.formtest.correct($("#" + eval(Page_Validators[fieldi].id).controltovalidate.toString()));
				return true;
			}
		}
	}
	$.fn.formtest.completeform = function(validationGroup,elfoutmelding) {
	  if (typeof(Page_Validators) == "undefined") {
		return true;
	  }
	  if(!validationGroup || validationGroup == "")
    {
		  validationGroup = "formulier";
	  }

	  var blnFirst = false;
	  var prevField = null;
	  var prevValid = true;
	  var melding = '';
	  for (i = 0; i < Page_Validators.length; i++) {
		  if(eval(Page_Validators[i].id).validationGroup.toString() != validationGroup){
			  continue;
		  }
      if($("#" + eval(Page_Validators[i].id).controltovalidate.toString() + ":visible").length == 0)
      {
        continue;
      }
		  ValidatorValidate(Page_Validators[i], eval(Page_Validators[i].id).validationGroup.toString(), null);
		  if(!eval(Page_Validators[i].id).isvalid) {
		    if (prevField != eval(Page_Validators[i].id).controltovalidate.toString() || prevValid) {
          if(blnFirst == false)
		      {
			      $.fn.formtest.incorrect($("#" + eval(Page_Validators[i].id).controltovalidate.toString()),'',false);
          }
			    melding += eval(Page_Validators[i].id).errormessage.toString().replace(' *','') + "<br />";
		    }
		    if(blnFirst == false)
		    {
			    el = $("#" + eval(Page_Validators[i].id).controltovalidate.toString())
			    $.fn.formtest.fieldtest(el);
			    $.scrollTo(el, 100, { offset: -40, queue: false });
			    $(el).focus();
			    blnFirst = true;
		    }		  
		  }else if (eval(Page_Validators[i].id).controltovalidate.toString() != prevField) {
		    $.fn.formtest.correct($("#" + eval(Page_Validators[i].id).controltovalidate.toString()));
		  }
		  if(i < Page_Validators.length)
		  {
		      prevField = eval(Page_Validators[i].id).controltovalidate.toString();
		      prevValid = eval(Page_Validators[i].id).isvalid;
		  }
	  }

	  ValidatorUpdateIsValid();
	  ValidationSummaryOnSubmit(validationGroup);
	  Page_BlockSubmit = !Page_IsValid;
	  if(blnFirst == false)
    {
       Page_Validators = Array();
    }
      if($(elfoutmelding).length > 0)
      {
	  }

	  return Page_IsValid;
	}
})(jQuery);
