﻿$(document).ready(function(){
    $(".ErrorBubble").each(function(){
        var thisElement = $(this);
        thisElement.click(function() {
            if(!thisElement.prev().is('input[type=checkbox]:not(:checked)'))
            {
                $(this).fadeOut(300).prev().focus().select();
            }
        });
        thisElement.prev()
        .blur(function() {
            validateField(this);
        })
        .change(function() {
            validateField(this);
        })
        .focus(function() {
            if(!$(this).is('input[type=checkbox]:not(:checked)'))
            {
                $(this).select().next().fadeOut(300);
            }
        });
    });
}); 

function validateInputs(form) {
    var valid = true;
    	
    $(form)
        .find("input[type='checkbox'], input[type='text'], input[type='password'], select, textarea")
        .filter(":enabled")
        .each(function() {
            if ( !validateField(this) )
            {
                valid = false;
            }
    });
    
    $(".Invalid").each(function(){
        var thisElement = $(this);
        if(!thisElement.is('input[type=checkbox]:not(:checked)'))
        {
            thisElement.focus().select();
        }
    	return valid;
    });
    		    
	return valid;
}

function validateField(sender) {

    var element = $(sender || this);

    if (
            ( element.is('.Requierd') && ( element.val() == '' || element.is('input[type=checkbox]:not(:checked)') ) ) ||
            ( element.is('.Regex') && !new RegExp(element.attr("regex"), "gi").test(element.val()) && element.val() != "" ) ||
            ( element.is('.ValidationExpression') && !eval( element.attr("validationExpression") ) )
       )
    {
        if (typeof(element.attr('error')) != "undefined" && element.attr('error') != null)
        {
            element.addClass('Invalid');
            element.next('.ErrorBubble').fadeIn(300).html(element.attr('error'));
        }
        return false;
    }
    else
    {
        element.removeClass('Invalid');
        element.next('.ErrorBubble').hide().html('');
        return true;
    }
}

function fadeInAndOutInvalid(sender, num) 
{
    if (!num || num > 0)
        $(sender).fadeOut(300, function() { 
            $(this).fadeIn(300); 
            if (num)
                fadeInAndOutInvalid(sender, num - 1);
        });
}

function finalCheck(element)
{
//    alert('aaa');
//    alert($(element).attr('check'));
}


