function checkForms()
{
    var genericError = "Il form non è compilato correttamente!";
    var dateFormat = "dd/mm/yyyy";
    var reMail = RegExp("[a-zA-Z0-9._-]+@([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}");
    var reCap = RegExp("[0-9]{5}");
    var reNum = RegExp("[0-9]");

    //initialize dateFormat
    dd_index = dateFormat.indexOf("dd");
    mm_index = dateFormat.indexOf("mm");
    yyyy_index = dateFormat.indexOf("yyyy");

    $("form").each(function(i, item)
    {
		
		$(this).find("input, textarea, select").focus(function()
        {
            $(this).removeClass("error");

        });

        /*$(this).find("label, input[type='radio']").click(function()
        {
            $(this).parent().parent().find("label").removeClass("error");
        });*/

        $(this).submit(function(){
            //$("#errorMessage").hide();
            //$(this).find(".ctn_form .error").removeClass("error");

            var errors = false;
			
            $(item).find(".required").each(function(j, obj)
            {
                if ($(obj).val() == null || $(obj).val() == "")
                {
                    $(obj).addClass("error");
                    errors = true;
                }
            });
            $(item).find(".cap").each(function(j, obj)
            {
                if (($(obj).val() != "") && (reCap.test($(obj).val()) != true))
                {
                    $(obj).addClass("error");
                    errors = true;
                }
            });
            $(item).find(".email").each(function(j, obj)
            {
                if (($(obj).val() != "") && (reMail.test($(obj).val()) != true))
                {
                    $(obj).addClass("error");
                    errors = true;
                }
            });
            $(item).find(".numeric").each(function(j, obj)
            {
                if (($(obj).val() != "") && (reNum.test($(obj).val()) != true))
                {
                    $(obj).addClass("error");
                    errors = true;
                }
            });

            $(item).find("[class*='maxlength']").each(function(j, obj)
            {
                var classes = $(obj).attr("class");
                classes = classes.substring(classes.lastIndexOf("maxlength"), classes.length);
                if (classes.lastIndexOf(" ") != -1)
                {
                    classes = classes.substring(classes.lastIndexOf("maxlength"), classes.lastIndexOf(" "));
                } else
                {
                    classes = classes.substring(classes.lastIndexOf("maxlength"), classes.length);
                }
                len = parseInt(classes.replace("maxlength", ""), 10);
                if (($(obj).val() != "") && ($(obj).val().length > len))
                {
                    $(obj).addClass("error");
                    errors = true;
                }
            });

            $(item).find("[class*='minlength']").each(function(j, obj)
            {
                var classes = $(obj).attr("class");
                classes = classes.substring(classes.lastIndexOf("minlength"), classes.length);
                if (classes.lastIndexOf(" ") != -1)
                {
                    classes = classes.substring(classes.lastIndexOf("minlength"), classes.lastIndexOf(" "));
                } else
                {
                    classes = classes.substring(classes.lastIndexOf("minlength"), classes.length);
                }
                len = parseInt(classes.replace("minlength", ""), 10);
                if (($(obj).val() != "") && ($(obj).val().length < len))
                {
                    $(obj).addClass("error");
                    errors = true;
                }
            });

            $(item).find(".datebox").each(function(j, obj)
            {
                var dd = $(obj).find(".day").val();
                var mm = $(obj).find(".month").val()-1;
                var yyyy = $(obj).find(".year").val();
                if (!checkDate(dd, mm, yyyy))
                {
                    $(obj).find("input").addClass("error");
                    errors = true;
                }else{
					$(obj).find("input").removeClass("error");
				}
            });

            /*$(item).find("[type='radio'].required").each(function(j, obj)
            {
                if ($("[type='radio'][name='" + $(this).attr("name") + "']:checked").length == 0)
                {
                    $(obj).parent().parent().find("label").addClass("error");
                    errors = true;
                }
            });

            $(item).find("[type='radio'].trueOnly").each(function(j, obj)
            {
                if ($("[type='radio'][name='" + $(this).attr("name") + "']:checked").val() != "true")
                {
                    $(obj).parent().parent().find("label").addClass("error");
                    errors = true;
                }
            });

            $(item).find("[type='checkbox'].required").each(function(j, obj)
            {
                if ($(obj).parent().find("[type='checkbox']:checked").length == 0)
                {
                    $(obj).parent().find("label[for='']").addClass("error");
                    errors = true;
                }
            });*/

            if (errors)
            {
				alert(genericError);
                return false;
            }
			return true;
        });
    });
}

function checkDate(dd, mm, yyyy)
{
    var chkdate = new Date();
    chkdate.setFullYear(yyyy);
    chkdate.setMonth(mm);
    chkdate.setDate(dd);
    chkdate.setHours(0, 0, 0, 0);
    if (dd != chkdate.getDate() || mm != chkdate.getMonth() || yyyy != chkdate.getFullYear())
    {
        return false;
    }
    return true;
}
