﻿(function($) {

    $.fn.validateInputs = function(invokeOnInvalid) {

        var valid = true;
        //var inp = $(this)
        //        .find("input[@type='checkbox'], input[@type='text'], input[@type='password'], select, textarea");
        //alert(inp.length);
        this.find(".ErrorMessageContainer").html("");
        this.each(function() {
            $(this)
                .find("input[@type='checkbox'], input[@type='text'], input[@type='password'], select, textarea")
	            .filter(":enabled")
	            .each(function() {
	                if (!validateField(this)) {
	                    valid = false;
	                    if (invokeOnInvalid != null && typeof (invokeOnInvalid) == "function")
	                        invokeOnInvalid(this);
	                }
	            });

        });

        //		try
        //		{	
        //	        if (!valid)
        //	        {
        //	            $("<a id='ancor'></a>")
        //	                .insertAfter( $('.Invalid:first') )
        //	                .ScrollTo(700, null, null, function() { $('#ancor').remove(); } , -150);
        //	        }
        //	    } catch(e) {}
        //		
        return valid;
    };

    $.fn.autoValidate = function() {
        return this.each(function() {
            $(this)
                .find("input[@type='text'], input[@type='password'], select, textarea, input[@type='checkbox']")
	            .filter(".Required:enabled, .Regex:enabled")
	            .blur(function() { validateField(this); })
	            .change(function() { validateField(this); });
        });
    };

})(jQuery);

function validateField(sender) {

    var element = $(sender);

    if (
            (element.is('.Required') && (element.val() == '' || element.val() == "0")) ||
            (element.is('.Regex') && !new RegExp(element.attr("regex"), "gi").test(element.val()) && element.val() != "") ||
            (element.is('.Required') && element.is("input[@type='checkbox']") && !element.is(":checked"))
       ) {
        element.addClass('Invalid')
			   .siblings('.SelectBG')
			   .addClass('Invalid'); // add 'Invalid' to the "select's brother div".

        if (typeof (element.attr('error')) != "undefined" && element.attr('error') != null) {
            if (element.parent().find('.error').length == 0) {
                if (element.parents('form').find(".ErrorMessageContainer").html().indexOf(element.attr('error')) < 0) {
                    element.parents('form').find(".ErrorMessageContainer").append(element.attr('error') + "<br />");
                } 
            }
        }
        return false;
    }
    else {
        element.removeClass('Invalid')
			   .siblings('.SelectBG')
			   .removeClass('Invalid'); // remove 'Invalid' from the "select's brother div".
        return true;
    }
}

//function fadeInAndOutInvalid(sender, num) 
//{
//    if (!num || num > 0)
//        $(sender).fadeOut(300, function() { 
//            $(this).fadeIn(300); 
//            if (num)
//                fadeInAndOutInvalid(sender, num - 1);
//        });
//}

