﻿
$.fn.jFormValidator = function(options) {

    var callback = function(validator, controlToValidate, index) {
        if (controlToValidate.attr('invalid') == undefined) {
            controlToValidate.removeClass(settings.invalidClass);
            if (!validator[0].isvalid) {
                controlToValidate
                .attr('invalid', true)
                .addClass(settings.invalidClass);
            }
        }
    }
    var endCallback = function(validators) {
        $.each(validators, function() {
            $('#' + this.controltovalidate).removeAttr('invalid');
        });
    }

    var settings = {
        invalidClass: 'invalid',
        validatorCallBack: callback
    }

    settings = $.extend(settings, options);

    var fn = {
        initialize: function(e) {
            setup(e);
        }
    }

    var setup = function(e) {
        //Overriding Asp.Net AllValidatorsValid
        AllValidatorsValid = function(validators) {
            var AllValidatorsIsValid = true;
            if ((typeof (validators) != "undefined") && (validators != null)) {
                var i;
                for (i = 0; i < validators.length; i++) {
                    if (AllValidatorsIsValid && !validators[i].isvalid) {
                        AllValidatorsIsValid = false;
                    }
                    callback($(validators[i]), $('#' + validators[i].controltovalidate), i);
                }
                endCallback(validators);
            }
            return AllValidatorsIsValid;
        }

    }
    return this.each(function() {
        fn.initialize($(this));
    });
}


